错误
Error validating server certificate for 'https://server:443': - 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: Tom - Valid: from Sun, 01 Feb 2009 03:51:25 GMT until Tue, 01 Feb 2011 03:51:25 GMT - Issuer: Fake Company, NYC, New York, US - Fingerprint: fingerprint here (R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://server/svn/repo': Server certificate verification failed: certificate issued for a different hostname, issuer is not trusted (https://server)
我知道这一切。 这就是为什么我遵循所有的指南,让svn自动接受证书:
/root/.subversion/servers
[global] ssl-authority-files = /root/scripts/server.crt
/root/scripts/server.crt
-----BEGIN CERTIFICATE----- MIIDejCCAmICCQDibo0twimetjANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJV UzERMA8GA1UECBMITmV3IFlvcmsxDDAKBgNVBAcTA05ZQzEjMCEGA1UEChMaSGFw et al -----END CERTIFICATE-----
/root/scripts/backup.sh
svn up /BACKUP/checkouts/server/ --username tom
而且这个命令作为root运行正常(没有sudo,直接以root身份),没有提示确authentication书(之前是这样的,但是我select永久接受p)。
有谁知道为什么我的脚本将无法正常工作? 过去几个月一直令我烦恼。
**编辑:**这让我想起了一些事情,而且我遵循了David的build议,但是仍然不起作用。 现在的错误是:
Error validating server certificate for 'https://server:443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! Certificate information: - Hostname: server - Valid: from Sat, 20 Jun 2009 14:10:45 GMT until Mon, 20 Jun 2011 14:10:45 GMT - Issuer: Fake Company, New York, US - Fingerprint: 1a:c6:9c:eb:62:9e:e1:05:d9:d3:ac:01:f4:35:dc:00:14:48:e5:39 (R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://server/svn/folder': Server certificate verification failed: issuer is not trusted (https://server)
validation“https:// server :443”的服务器证书时出错: - 证书不是由可信任的机构签发的。 使用 指纹手动validation证书! - 证书主机名称不匹配。 证书信息: - 主机名: 汤姆 - 有效期:从2009年2月1日(星期日)03:51:25 GMT至2011年2月1日(星期二)03:51:25 GMT - 发行人:美国纽约州纽约市假公司 - 指纹:这里的指纹
问题是您的证书不符合您的服务器的主机名。 您需要证书中的CN字段与您的主机名相匹配。 在你的情况下,你的主机名是“server”,证书的CN是“Tom”。 您需要使用正确的CN值重新生成证书。
有一件事要注意 – 许多cron作业运行w /一个不同的主页(例如/ etc / crontab(cron.daily等)设置HOME = /),所以它有一个不同的.subversion文件。 就在这里,我们在这里有一个/.subversion树没有接受的证书。 在cron脚本中正确设置HOME修复了它。
你有没有尝试设置ssl-trust-default-ca
为true
? 我不知道是否会解决你的问题,但我看到在版本控制与Subversion书这个推荐。
许多OpenSSL安装还有一组预定义的“默认”CA,几乎可以普遍被信任。 为了使Subversion客户端自动信任这些标准权限,请将
ssl-trust-default-ca
variables设置为true
。
有几个解决scheme来解决想到的问题。 首先,您可以在Apache中创build一个不使用此证书(纯http)的新Webdav虚拟主机。 或者,您可以使用sron + ssh访问方法和cron作业的私钥authentication(可能是安全风险)。
如果你不能解决证书的问题,或者不绑定到https webdav访问,我只能走这条路。
这个问题的答案帮助我组装了解决类似问题所需的部分。 这只是为了像我这样的其他Linux noobs预装件。
testing你通过cron使用运行的脚本
sudo su
而不是我正在使用的
sudo -s
否则主目录和其他variables将不会像cron(root)运行时那样
其次不要使用“–no-auth-cache”。 如果添加该交换机,永远不能永久接受该证书。
使用上面的方法,我可以通过sudo su运行一次脚本,永久接受证书并随后执行cron运行。
你可以只是:
echo t | svn update --username yourusername--password yourpassword --no-auth-cache /local.repository/path 2>/dev/null
您可以尝试手动validation证书 :
$ openssl x509 -noout -fingerprint -in cert.pub MD5 Fingerprint=0D:89:07:D6:4F:BC:84:2E:2E:14:C2:DA:D4:3B:D5:7C
把这个放在你的脚本中:
# svn up /BACKUP/checkouts/server/ --username tom –config-dir /xyz/zyx
config-dir可以是任何你想要存储证书信息的地方。 在从cron运行它之前,请手动运行它并使用“p”永久接受证书。
一旦被接受,通过cron运行它,我相信它会像魅力一样工作。
还有一个select(如果以前的选项没有任何机会),这在其他环境中是有风险的,但在你的环境中,应该没问题。 使用这样的脚本:
# svn up /BACKUP/checkouts/server/ --username tom --non-interactive –-trust-server-cert
这只是简单地接受证书而不打扰。 在生产环境中不build议这样做,因为这是一种安全风险,但在您使用自制证书的情况下,您可以使用它。
来源: GeekRide