![SVN 受信任认证错误](https://linux22.com/image/565567/SVN%20%E5%8F%97%E4%BF%A1%E4%BB%BB%E8%AE%A4%E8%AF%81%E9%94%99%E8%AF%AF.png)
可能重复:
SVN SSL 证书验证错误
我正在运行 RedHat Enterprise Linux 6,并安装了 subversion 服务器(使用 Apache)。我刚刚将 Apache 配置为使用 Geotrust 的 SSL 证书运行 HTTPS。Apache 部分运行良好(我可以通过 HTTPS 访问我的网站,没有任何警告或问题)。
但是,当我运行时svn co https://myserver.com/svn/proj_name
,出现以下错误:
Error validating server certificate for 'https://myserver.com:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
Certificate information:
- Hostname: myserver.com
- Valid: from Sun, 23 Oct 2011 16:15:13 GMT until Thu, 25 Oct 2012 05:38:36 GMT
- Issuer: GeoTrust, Inc., US
- Fingerprint: (some fingerprint)
(R)eject, accept (t)emporarily or accept (p)ermanently?
另外,我的 Subversion“服务器”配置文件中有:
[global]
ssl-authority-files=/usr/share/certs/GeoTrust_Primary_CA.pem;
ssl-trust-default-ca = true
但是当我尝试访问 subversion 时,我在错误日志中发现了这一点:
svn: OPTIONS of 'https://myserver.com/svn/project_name': Server certificate verification failed: issuer is not trusted (https://myserver.com)
我知道 SVN 正在加载 GeoTrust Primary CA 文件,而且由于我的证书来自 GeoTrust,我不明白为什么它仍然说服务器证书验证失败。为什么它仍然认为颁发者不受信任?
答案1
标记为“主要”的证书意味着也可能存在“次要”中间证书。浏览器制作的 SSL 验证工具非常糟糕,因为每个浏览器制造商经常将这些中间证书导入其密钥库,从而掩盖了您在 svn 中看到的问题。
GeoTrust 是否对您的 SSL 证书使用四向证书链?如果是,您将需要为您的 apache 配置创建一个 pem 包,并将两个中间证书都包含在该包中。
答案2
好吧,我在你的另一个问题上特别指出,一旦你解决了证书加载问题,这个答案可能就适用了。但是,嘿,我想我会从那里删除它并在这里重新发布。
需要检查以下几件事:
- 确保受信任的根确实是您的证书信任链的根。
只需在浏览器中启动您的 SVN 站点并检查证书路径,返回到根目录 - 确保根的指纹与您拥有的文件相匹配。
并将证书导出到 x509,为第二步做准备:
- 让 Apache 踢出一直回到根目录的证书的完整路径。
如果 Apache 没有提供中间件,SVN 客户端就无法推断中间件。
您需要一个SSLCertificateChainFile
指令,指向包含完整 x509 证书链的文件(您自己的证书除外,它应该在SSLCertificateFile
):
-----BEGIN CERTIFICATE-----
(intermediate certificate's base64 data here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate's base64 data here)
-----END CERTIFICATE-----
如果中间体较多,则按相反顺序添加即可。
一旦完成,请验证 Apache 是否使用 发送了整个链openssl s_client -connect myserver.com:443 -showcerts
。