SVN 受信任认证错误

SVN 受信任认证错误

可能重复:
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

相关内容