AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 27006
In Process
Tom Ritter
Tom Ritter
Asked: 2009-06-17 19:34:58 +0800 CST2009-06-17 19:34:58 +0800 CST 2009-06-17 19:34:58 +0800 CST

svn 不会接受我的无效证书

  • 772
  • 我有一个运行 apache 的服务器,它带有一个自签名证书(服务器),并且挂上了 subversion
  • 它需要用户名才能从 repo 中签出或更新。
  • 我从 repo 结帐,我试图更新两台服务器上的 cron 作业:服务器和客户端。由于相同的原因,这两个 cron 作业都不会起作用(我在两者上的设置几乎相同,但客户端更简单)。
  • 以下是在客户端,只有一个登录:root(我知道,请不要嘲笑我)
  • 如果你认为这很重要,他们都是 gentoo

错误

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 身份)运行,没有提示确认证书(以前有,但我选择 p 表示永久接受)。

有谁知道为什么我的脚本不起作用?在过去的几个月里,我一直很烦。

**编辑:**我花了一点时间才回到这一点,我听从了大卫的建议,但它仍然不起作用。现在错误是:

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)
linux svn permissions https certificate-authority
  • 9 9 个回答
  • 29709 Views

9 个回答

  • Voted
  1. David Pashley
    2009-06-18T00:13:24+08:002009-06-18T00:13:24+08:00
    验证“https:// server :443”的服务器证书时出错:
     - 证书不是由受信任的机构颁发的。使用
       指纹手动验证证书!
     - 证书主机名不匹配。
    证书信息:
     - 主机名:汤姆
     - 有效期:从 2009 年 2 月 1 日星期日 03:51:25 GMT 到 2011 年 2 月 1 日星期二 03:51:25 GMT
     - 发行人:Fake Company,NYC,纽约,美国
     - 指纹:指纹在这里
    

    问题是您的证书与服务器的主机名不匹配。您需要证书中的 CN 字段来匹配您的主机名。在您的情况下,您的主机名是“server”,证书的 CN 是“Tom”。您需要使用正确的 CN 值重新生成证书。

    • 5
  2. afbach
    2011-01-20T15:01:18+08:002011-01-20T15:01:18+08:00

    需要注意的一件事 - 许多 cron 作业使用不同的 HOME 运行(例如 /etc/crontab (cron.daily 等)设置 HOME=/),因此它具有不同的 .subversion 文件。只是在这里咬我们,有一个 /.subversion 树没有接受的证书。在 cron 脚本中正确设置 HOME 修复了它。

    • 2
  3. Leonel Martins
    2009-07-15T06:24:45+08:002009-07-15T06:24:45+08:00

    您是否尝试设置ssl-trust-default-ca为true?我不知道是否能解决您的问题,但我在带有 Subversion 的版本控制一书中看到了这个建议。

    许多 OpenSSL 安装还具有一组预定义的“默认”CA,这些 CA 几乎是普遍受信任的。要使 Subversion 客户端自动信任这些标准权威,请将 ssl-trust-default-ca变量设置为true.

    • 1
  4. ThaSami
    2021-03-04T13:23:37+08:002021-03-04T13:23:37+08:00

    只需将其添加到参数中

    --trust-server-cert-failures="other,unknown-ca,cn-mistmatch,expired" 
    
    • 1
  5. Dana the Sane
    2009-06-17T19:45:36+08:002009-06-17T19:45:36+08:00

    有几个解决方案可以解决想到的问题。首先,您可以在 Apache 中创建一个不使用此证书(纯 http)的新 webdav 虚拟主机。或者,您可以对 cron 作业使用 svn+ssh 访问方法和私钥身份验证(可能存在安全风险)。

    如果您无法解决证书问题,或者与 https webdav 访问无关,我只会走这条路。

    • 0
  6. 2010-01-29T05:31:05+08:002010-01-29T05:31:05+08:00

    你可以:

    echo t | svn update --username yourusername--password yourpassword --no-auth-cache /local.repository/path 2>/dev/null
    
    • 0
  7. AngelBlaZe
    2011-05-26T07:18:32+08:002011-05-26T07:18:32+08:00

    这个问题的答案帮助我组装了解决我遇到的类似问题所需的部分。这只是为像我这样的其他 linux 新手预先组装这些部件。

    测试您通过 cron 运行的脚本

    须藤

    而不是我使用的

    须藤-s

    否则主目录和其他变量不会像 cron(root) 运行时那样

    其次不要使用“--no-auth-cache”。如果添加该开关,您将永远无法永久接受证书。

    使用上述方法,我能够通过 sudo su 运行一次脚本,永久接受证书,随后的 cron 运行正常。

    • 0
  8. Inturbidus
    2011-07-18T11:14:40+08:002011-07-18T11:14:40+08:00

    您可以尝试手动验证证书:

    $ 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
    
    • 0
  9. Napster_X
    2013-03-17T02:41:05+08:002013-03-17T02:41:05+08:00

    把它放在你的脚本中:

    # svn up /BACKUP/checkouts/server/ --username tom –config-dir /xyz/zyx
    

    config-dir 可以是您想要存储证书信息的任何位置。在从 cron 运行它之前,手动运行它并使用“p”永久接受证书。

    一旦被接受,通过 cron 运行它,我相信它会像魅力一样工作。

    还有一个选项(如果以前的选项无论如何都不起作用),这在其他环境中是有风险的,但在您的环境中,应该没问题。使用这样的脚本:

    # svn up /BACKUP/checkouts/server/ --username tom --non-interactive –-trust-server-cert
    

    这将简单地接受证书而无需打扰。在生产环境中不建议这样做,因为这是一种安全风险,但在您使用自制证书的情况下,您可以使用它。

    资料来源:GeekRide

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve