Subversion客户端接受服务器证书出现“The certificate hostname does not match”的问题

当使用https://形式的URL连接Apache时,Subversion客户端将会受到两个类型的响应:

1、一个服务器证书

2、一个针对客户端证书的请求

在本人的应用场景主要涉及SVN仓库迁移的操作,需要将大量的远程仓库集中迁移到本地仓库进行管理。所以这里主要描述服务器证书相关的问题,因为需要使用脚本执行Subversion的svnrdump命令,在执行的过程中碰到如下提示信息:

Error validating server certificate for 'https://...:端口号':

  • The certificate is not issued by a trusted authority. Use the

    fingerprint to validate the certificate manually!

  • The certificate hostname does not match.

Certificate information:

  • Hostname: ..cn

  • Valid: from Wed, 29 Nov 2017 01:24:36 GMT until Sat, 27 Nov 2027 01:24:36 GMT

  • Issuer: CMBAUTOTEST01TS.ho18t.cmbchina.cn

  • Fingerprint: cf:1f:c4:f0:9e:a3:42:0f:75:23:50:56:54:6e:11:71:df:a7:d3:9f

(R)eject, accept (t)emporarily or accept (p)ermanently?

在这里可以看到两个错误提示,第一个错误提示可以通过在命令行中添加参数“--trust-server-cert --non-interactive”(查询svnrdump命令相关的文档)解决,第二个错误是由于hostname不相同导致的。

导致这个问题的原因是:证书返回的Hostname是一个域名,但是验证时使用的是ip地址。

在这里使用的解决方法是:将https://连接中的ip地址替换为服务器返回的证书中的Hostname,然后在机器的hosts文件中添加ip与Hostname的关联映射。这样就可以保证脚本自动执行的过程中不会被“Hostname does not match”中断。

关于subversion的命令说明请参考官方文档:svnbook.red-bean.com/nightly/zh/svn.ref.html
posted on 2019-01-30 14:25  Mrnx  阅读(8638)  评论(0编辑  收藏  举报