我正在尝试访问我已经使用了一段时间的SVN服务器,但现在我收到了这个错误:
SSL握手失败:SSL错误:已发生TLS警告警报 接收。
在其他机器上(所有这些都在CentOS上完成),我之前没有访问过服务器,我会被提示(R)弹出,暂时接受(t)或接受(p)永久性?提供证书的选项,然后我能够成功连接。我的结论是旧证书被缓存,我需要获得一个新证书,但是,我无法找到清除它的方法,并在运行svn时再次收到此提示。
我确实读过很多类似的问题,这导致我清除/删除我的.subversion文件夹,但即便如此,它仍然不会提示我有关证书的信息,并且上述错误仍然会失败。有什么想法吗?
答案 0 :(得分:8)
您没有指定您遇到此问题的CentOS版本。
EL 6附带的Subversion与GnuTLS相关联,这是与OpenSSL链接的旧版本的更改。
您可以使用ldd:
进行测试$ ldd /usr/bin/svn | grep ssl
$ ldd /usr/bin/svn | grep tls
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x0030f000)
$
在某些情况下,GnuTLS库更为特殊。最常见的两个:
如果名称不匹配,您可以使用IP地址而不是名称来解决问题。如果主机是foo.com并且IP地址为1.2.3.4,您可以尝试以下方式:
svn switch --relocate https://foo.com/my-repo-name https://1.2.3.4/my-repo-name
您还可以尝试从源代码构建subversion,并在配置中使用openssl而不是gnutls。
答案 1 :(得分:2)
可以通过编辑Apache配置来解决此问题。 ServerName
指令应设置在VirtualHost
块内,例如:
<VirtualHost *:443>
ServerName mywebsite.com
</VirtualHost>
ServerName
应与您的SSL证书上的CN或其他名称匹配。