SSL 证书及 ServBay CA 故障排除
本文档提供 ServBay 本地开发环境中 SSL 证书及 ServBay CA 的一些常见问题及故障排除方法。
为什么我打开浏览器后,提示SSL证书不受信任?
当您在浏览器中尝试访问通过 ServBay 托管的本地网站时,如果看到类似以下的警告信息,通常意味着 SSL 证书配置存在问题:
- Chrome / Edge:
Your connection is not private
(你的连接不是专用连接)- 错误代码
NET::ERR_CERT_AUTHORITY_INVALID
- 错误代码
NET::ERR_CERT_COMMON_NAME_INVALID
(虽然不太常见,但如果证书与域名不匹配也可能出现)
- Firefox:
Warning: Potential Security Risk Ahead
(警告:前方存在潜在安全风险)- 点击“高级”后可能看到错误代码
SEC_ERROR_UNKNOWN_ISSUER
- 错误代码
SSL_ERROR_BAD_CERT_DOMAIN
(如果证书与域名不匹配)
- Safari:
This Connection Is Not Private
(此连接非私人连接)Safari can't verify the identity of the website "your-domain.test"
(Safari 无法验证网站“你的域名.test”的身份)
出现这个问题的最主要原因是 ServBay User CA
和 ServBay Public CA
没有正确进行安装并信任。这可能是因为:
- ServBay 的根证书没有被添加到系统的信任列表中。
- 您曾经在 MAMP / Laravel Herd 等其他本地开发环境中使用过同一个域名(例如
myapp.test
),而这些工具的证书与 ServBay 的证书发生了冲突,或者它们自身的证书系统出现了问题,导致浏览器缓存了错误的信任信息或证书。
解决方案
请按照以下步骤操作:
- 打开 ServBay
- 导航到 设置 (Settings),找到 ServBay Root CA 部分。
- 点击 重新安装 ServBay Root CA (Reinstall ServBay Root CA)。ServBay 将尝试自动修复根证书的安装和信任问题。
- 完全关闭并重新打开 您的浏览器(确保所有窗口和进程都已关闭,以清除缓存的 SSL 状态)。
- 重新访问您的网站。此时 SSL 证书错误应该已经解决。
如果问题仍然存在:
这通常意味着系统中存在旧的、冲突的或无效的证书,特别是如果您之前使用了其他工具(如 MAMP 或 Herd)为同一个域名生成过证书。
- 打开 macOS 的 钥匙串访问 (Keychain Access) 应用程序 (可以在“应用程序” > “实用工具”中找到)。
- 在右上角的搜索框中,输入出现问题的域名 (例如
myapp.test
,或者如果您不确定,可以尝试搜索mamp
或herd
等关键词,查找相关的证书颁发机构)。 - 在顶部的“种类”中,筛选 证书 (Certificates)。
- 在搜索结果中,查找与您输入的域名相关的所有 SSL 证书。特别注意颁发者 (Issuer) 是否为
ServBay User CA
,MAMP Development CA
,Laravel Herd CA
或其他类似名称。 - 选中 找到的与问题域名相关的证书(特别是那些不是由
ServBay User CA
颁发的,或者看起来可疑的证书),然后按Delete
键将其 删除。您可能需要输入系统密码进行确认。请谨慎操作,确保只删除与您本地开发域名相关的证书。 - (可选但推荐) 在钥匙串访问中,再次搜索
ServBay User CA
和ServBay Public CA
,确保证书存在并且图标上没有红色的 "x" (表示不信任)。如果它们不被信任(有红叉),可以尝试双击证书,展开“信任 (Trust)”部分,将“使用此证书时 (When using this certificate)”设置为“始终信任 (Always Trust)”。 - 返回 ServBay 应用程序。
- 导航到 设置 (Settings) -> ServBay Root CA。
- 点击 重新创建所有 ServBay User 证书 (Recreate All ServBay User Certificates)。这将为 ServBay 管理的所有站点重新生成新的 SSL 证书。
- 重新启动您的 Mac 电脑。这有助于确保所有服务和系统组件都加载了最新的证书和信任设置。
- 重新打开浏览器,再次尝试访问您的网站。
通过增加这些常见的报错信息,用户应该能更快地判断自己的问题是否与 SSL 证书信任有关,并直接找到相应的解决方案。
SSL 证书丢失怎么办?
在使用 ServBay 进行本地网站开发时,有时可能会遇到网站的 SSL 证书文件意外丢失的情况。这会导致您的 Web 服务器(如 Nginx、Caddy 或 Apache)无法启动或正常加载网站,并在日志中出现与证书文件相关的错误提示。
故障描述
当 ServBay 为您的本地网站自动签发的 SSL 证书文件 (.crt
和 .key
) 丢失时,您可能会在 Web 服务器的错误日志中看到类似的提示。这些错误通常表明服务器无法找到或读取指定的证书文件路径。
以下是一些常见的错误提示示例:
Nginx 错误提示:
log
nginx: [emerg] cannot load certificate "/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt, r) error:10000080:BIO routines::no such file)
nginx: configuration file /Applications/ServBay/package/etc/nginx/nginx.conf test failed
1
2
2
Caddy 错误提示:
log
Error: loading http app module: provision http: getting tls app: loading tls app module: provision tls: loading certificates: open /Applications/ServBay/ssl/private/tls-certs/servbay.host/ser3vbay.host.crt: no such file or directory
1
Apache 错误提示:
log
AH00526: Syntax error on line 15 of /Applications/ServBay/package/etc/apache/vhosts/servbay.host.conf:
SSLCertificateFile: file '/Applications/ServBay/ssl/pri3vate/tls-certs/servbay.host/servbay.host.crt' does not exist or is empty
1
2
2
这些错误信息的核心含义是一致的:Web 服务器配置中指定的 SSL 证书文件路径无效,因为文件不存在或无法访问。
解决方案
对于通过 ServBay 自动为本地网站签发的 SSL 证书,ServBay 提供了便捷的自动检测和重新签发机制来解决证书丢失问题。
请按照以下步骤操作:
- 启动 ServBay 应用: 确保 ServBay 应用正在运行。
- 导航至网站列表: 在 ServBay 应用的左侧导航栏中,点击 网站。
- 选择受影响的网站: 在网站列表中,找到出现 SSL 证书丢失问题的本地网站名称,并点击它。
- 自动检测与签发: ServBay 在加载网站配置时,会自动检测该网站所需的 SSL 证书文件是否存在。如果检测到证书丢失(例如
.crt
或.key
文件缺失),ServBay 将自动尝试为您重新签发并部署新的证书文件到正确的位置 (/Applications/ServBay/ssl/private/tls-certs/您的域名/
)。 - 重启 Web 服务器: 证书文件重新生成并部署成功后,您需要重启正在为该网站提供服务的 Web 服务器软件包(如 Nginx, Caddy 或 Apache),以便它能够加载新的证书文件。请导航至左侧导航栏的 软件包 页面,找到您使用的 Web 服务器软件包,点击其旁边的重启按钮(通常是一个循环箭头图标)。
- 验证问题解决: Web 服务器重启成功后,尝试在浏览器中通过 HTTPS 访问您的本地网站(例如
https://您的域名
)。问题应该已经解决,网站可以正常加载并通过 HTTPS 连接。
注意事项
- 本解决方案主要针对 ServBay 自动为本地网站签发的 SSL 证书。如果您使用的是自己导入的自定义 SSL 证书,丢失后 ServBay 不会自动重新签发,您需要手动找回或重新获取并导入证书文件。
- ServBay 使用内置的 ServBay User CA 为本地网站签发证书,以便在本地环境中实现 HTTPS。如果您在浏览器中访问本地 HTTPS 网站时仍然遇到证书不受信任的警告,这可能与 ServBay User CA 未被您的操作系统或浏览器信任有关。请参考 ServBay 关于 信任 ServBay CA 的相关文档进行配置。
- ServBay 提供数据备份功能,包括网站配置和 SSL 证书的备份。定期备份可以帮助您在意外情况发生时快速恢复数据。
常见问题 (FAQ)
Q: 为什么 ServBay 会自动签发本地网站的 SSL 证书?
A: ServBay 的目标是提供一个完整的本地开发环境。为了模拟生产环境并方便开发者调试 HTTPS 应用,ServBay 会利用内置的 ServBay User CA 为您创建的本地网站自动签发 SSL 证书,实现本地 HTTPS 访问。
Q: 我可以使用自己申请的 SSL 证书吗?
A: 是的,ServBay 支持导入和使用您自己的 SSL 证书(包括通过 ACME / Let's Encrypt 申请的证书)。本故障排除指南仅适用于 ServBay 自动生成的证书。
Q: 重新签发证书安全吗?
A: 是的,对于本地开发环境而言,ServBay 重新签发的是使用 ServBay User CA 签名的证书,仅用于您本地的开发和测试。它不会影响您网站在公共互联网上的安全性。
总结
ServBay 提供了方便的机制来管理本地开发环境的 SSL 证书。当 ServBay 自动签发的本地网站 SSL 证书意外丢失时,通过简单的几步操作,ServBay 能够自动检测并重新签发证书,帮助您快速恢复本地网站的正常 HTTPS 访问。