我正在运行以下命令:
svn info --non-interactive --trust-server-cert --no-auth-cache --xml "https://ommited/svn/YAMS"
不幸的是,我收到了以下错误:
?xml version="1.0" encoding="UTF-8"?>
<info>
svn: E175002: Unable to connect to a repository at URL 'https://ommited/svn/YAMS'
svn: E175002: OPTIONS of 'https://ommited/svn/YAMS': Server certificat
e verification failed: certificate issued for a different hostname, issuer is no
t trusted (https://ommited)
我以为如果我输入--non-interactive --trust-server-cert
,它就会忽略自签名证书问题。我在这里做错了什么吗?
答案1
您的主机名不匹配。请使用正确的主机名重新颁发证书。
svn cmd 中的一个奇怪之处是 --trust-server-cert 将信任任何 CA,但它仍会检查主机名是否有效以及证书是否已过期。
因此,请使用正确的主机名来解决您的问题。
是的,这没有意义:-)
看这里有关 svn 邮件列表的更多信息
答案2
运行以下 php 代码来接受证书,非常类似于您手动使用命令行执行的操作(按“p”可永久接受证书):
<?php
header('Content-Type: text/plain; charset=UTF-8');
print( shell_exec('echo p | svn log --limit 4 c:/work/trunk 2>&1') );
?>
运行一次,证书就会被接受,现在 - “照常”运行它(不再需要echo p
)
<?php
header('Content-Type: text/plain; charset=UTF-8');
print( shell_exec('svn log --limit 4 c:/work/trunk 2>&1') );
?>
注意2>&1
最后的。我建议也添加它。这样你就可以看到错误输出(如果有的话)。
功劳归于当信任服务器证书不够时进行颠覆