使用自签名 SSL 证书运行 SVN 命令

使用自签名 SSL 证书运行 SVN 命令

我正在运行以下命令:

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最后的。我建议也添加它。这样你就可以看到错误输出(如果有的话)。

功劳归于当信任服务器证书不够时进行颠覆

相关内容