VS Code Live Share 报 certificate has expired 如何解决?
结论
Starting collaboration session: certificate has expired 表示启动协作会话时,某个连接的证书校验报告证书过期。可能是目标服务的证书或证书链中的某张证书过期,也可能是执行校验的机器时间不正确。
仅凭这条弹窗,无法判断出问题的是登录服务、Live Share 的后续连接,还是代理提供的证书,也不能认定故障由 Remote - SSH 引起。先检查时间,再通过日志定位失败的连接。
先检查本机和远程服务器的时间
证书校验依赖系统时间。即使证书仍在有效期内,机器时间错误也可能使它被判定为过期。
如果本机和远程服务器使用 macOS 或 Linux,可以分别执行:
# 在本机终端执行,然后在远程服务器终端执行同一命令
# 查看 UTC 时间,便于比较
date -u
确认两台机器的日期、年份和时间是否准确。显示的时区不同不代表时间错误,重点是实际时刻是否一致。如果时间明显不正确,先恢复系统时间同步,再重试启动会话。
需要检查两端,是因为目前无法确定执行证书校验的组件在哪一端运行。
从日志中定位失败的连接
打开 VS Code 的“输出”面板,查看 Live Share 相关输出。如果扩展提供日志导出入口,也可以导出日志。重新启动一次协作会话,检查报错时刻附近的记录。
重点查找:
certificate has expired附近的完整错误和调用上下文。- 失败请求的主机名,以及失败发生在登录阶段还是创建会话阶段。
- 是否出现代理、证书颁发者或证书有效期信息。
弹窗只说明最终失败原因。日志中的主机名和执行位置有助于判断应该修复哪一端。分享日志前,应删除访问令牌、账号信息和内部地址等敏感内容。
对比本地窗口和 Remote - SSH 窗口
新开一个没有连接 Remote - SSH 的 VS Code 窗口,打开本地文件夹并尝试启动 Live Share 会话,再与远程窗口的结果比较。
| 测试结果 | 下一步排查重点 |
|---|---|
| 本地窗口和远程窗口都失败 | 优先检查共同使用的本机环境、网络代理和目标服务证书 |
| 只有远程窗口失败 | 检查相关组件的实际运行位置,以及远程端的时间、网络和证书环境 |
| 更换获准使用的网络后恢复 | 检查原网络中的代理或 HTTPS 检查设备 |
这些结果只能缩小排查范围。例如,只有远程窗口失败,并不足以证明远程服务器的证书一定有问题。
根据证书来源处理
如果目标服务的证书过期,需要由服务维护方更新证书。若过期的是证书链中的中间证书,也需要检查服务提供的证书链。反复登录通常无法解决这类问题。
如果公司代理或 HTTPS 检查设备提供的证书过期,应联系管理员更新相关证书和配置。不要把重新导入一张已经过期的证书当作修复。
如果错误只出现在某个旧客户端环境中,记录 VS Code、Live Share 和 Remote - SSH 的版本,检查可用更新。更新可能修复客户端组件或证书链处理问题,但不能保证解决服务端证书过期。若日志表明涉及远程端组件,也应确认远程端对应组件的版本。
不要通过关闭 TLS 证书校验来绕过错误,这会使连接失去必要的身份验证保护。
为什么同时出现了登录提示?
登录提示本身不能证明账号有问题。已有登录状态失效、认证状态未能恢复,或启动过程需要重新认证,都可能触发登录。
你已经分别尝试 GitHub 和 Microsoft 账号,并遇到相同的证书错误。继续切换账号的排查价值有限,但这仍不足以确定具体故障点。下一步应确认登录是否已经完成,以及随后是哪一个连接的证书校验失败。
目前缺少失败主机名、证书信息和扩展日志,无法确定唯一根因,也不能指定一个必然有效的修复版本。
备注:内容仅供参考。
