SVN SSL 证书验证错误

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: Invalid config: unable to load certificate file '/usr/share/certs/GeoTrust_Primary_CA.pem'

每个人都有此文件的读取权限 - 并且我直接从 GeoTrust 网站下载了它。我是不是遗漏了什么?

答案1

最有可能的是,证书文件有问题。您可以使用以下命令检查:

openssl x509 -text < /usr/share/certs/GeoTrust_Primary_CA.pem

输出应该包括:

    Version: 3 (0x2)
    Serial Number:
        18:ac:b5:6a:fd:69:b6:15:3a:63:6c:af:da:fa:c4:a1
    Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority
    Validity
        Not Before: Nov 27 00:00:00 2006 GMT
        Not After : Jul 16 23:59:59 2036 GMT
    Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority
    Subject Public Key Info:

或者

md5sum /usr/share/certs/GeoTrust_Primary_CA.pem 

输出应为:55a9909182b959dcbb00c550725bcdf2 GeoTrust_Primary_CA.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

相关内容