Git for Windows:SSL 证书问题:证书已过期

Jür*_*ock 103 git openssl certificate lets-encrypt

我知道Let\'s Encrypt所做的更改可能会影响旧客户端,因为根证书会过期。请参阅DST 根 CA X3 到期(2021 年 9 月)

\n

但是,我认为这不会影响我,因为我的开发机器是最新的。

\n

但从今天开始,我在执行以下操作时收到消息git pull

\n
fatal: unable to access \'https://git.company.tld/project.git/\': SSL certificate problem: certificate has expired\n
Run Code Online (Sandbox Code Playgroud)\n

我刚刚下载了最新的 Windows 版 Git (2.33.0),并确认内置的OpenSSL是最新的 ( OpenSSL 1.1.1k 25 Mar 2021),这应该很好。

\n

Let\xe2\x80\x99s 加密证书的 OpenSSL 客户端兼容性更改

\n

但错误似乎仍然存在。

\n
openssl s_client -showcerts -connect git.company.tld:443\n
Run Code Online (Sandbox Code Playgroud)\n

节目

\n
openssl s_client -showcerts -connect git.company.tld:443\n
Run Code Online (Sandbox Code Playgroud)\n

问题不在于颁发的证书本身,它没有过期并且被 Chrome(Windows证书存储)和 Firefox 接受。

\n

Ela*_*ava 63

在我的Ubuntu 16.04.6 LTS (Xenial Xerus) 计算机上,解决方案是DST Root CA X3通过运行以下两个命令来删除证书:

sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

在我的Mac OS X 10.13.6 (High Sierra) 计算机上,cURL(以及 Git)依赖该/etc/ssl/cert.pem文件进行根 CA 验证。

DST Root CA X3解决方案是从文件中删除今天过期的证书:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            44:af:b0:80:d6:a3:27:ba:89:30:39:86:2e:f8:40:6b
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
        Validity
            Not Before: Sep 30 21:12:19 2000 GMT
            Not After : Sep 30 14:01:15 2021 GMT
        Subject: O=Digital Signature Trust Co., CN=DST Root CA X3
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:df:af:e9:97:50:08:83:57:b4:cc:62:65:f6:90:
                    82:ec:c7:d3:2c:6b:30:ca:5b:ec:d9:c3:7d:c7:40:
                    c1:18:14:8b:e0:e8:33:76:49:2a:e3:3f:21:49:93:
                    ac:4e:0e:af:3e:48:cb:65:ee:fc:d3:21:0f:65:d2:
                    2a:d9:32:8f:8c:e5:f7:77:b0:12:7b:b5:95:c0:89:
                    a3:a9:ba:ed:73:2e:7a:0c:06:32:83:a2:7e:8a:14:
                    30:cd:11:a0:e1:2a:38:b9:79:0a:31:fd:50:bd:80:
                    65:df:b7:51:63:83:c8:e2:88:61:ea:4b:61:81:ec:
                    52:6b:b9:a2:e2:4b:1a:28:9f:48:a3:9e:0c:da:09:
                    8e:3e:17:2e:1e:dd:20:df:5b:c6:2a:8a:ab:2e:bd:
                    70:ad:c5:0b:1a:25:90:74:72:c5:7b:6a:ab:34:d6:
                    30:89:ff:e5:68:13:7b:54:0b:c8:d6:ae:ec:5a:9c:
                    92:1e:3d:64:b3:8c:c6:df:bf:c9:41:70:ec:16:72:
                    d5:26:ec:38:55:39:43:d0:fc:fd:18:5c:40:f1:97:
                    eb:d5:9a:9b:8d:1d:ba:da:25:b9:c6:d8:df:c1:15:
                    02:3a:ab:da:6e:f1:3e:2e:f5:5c:08:9c:3c:d6:83:
                    69:e4:10:9b:19:2a:b6:29:57:e3:e5:3d:9b:9f:f0:
                    02:5d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10
    Signature Algorithm: sha1WithRSAEncryption
         a3:1a:2c:9b:17:00:5c:a9:1e:ee:28:66:37:3a:bf:83:c7:3f:
         4b:c3:09:a0:95:20:5d:e3:d9:59:44:d2:3e:0d:3e:bd:8a:4b:
         a0:74:1f:ce:10:82:9c:74:1a:1d:7e:98:1a:dd:cb:13:4b:b3:
         20:44:e4:91:e9:cc:fc:7d:a5:db:6a:e5:fe:e6:fd:e0:4e:dd:
         b7:00:3a:b5:70:49:af:f2:e5:eb:02:f1:d1:02:8b:19:cb:94:
         3a:5e:48:c4:18:1e:58:19:5f:1e:02:5a:f0:0c:f1:b1:ad:a9:
         dc:59:86:8b:6e:e9:91:f5:86:ca:fa:b9:66:33:aa:59:5b:ce:
         e2:a7:16:73:47:cb:2b:cc:99:b0:37:48:cf:e3:56:4b:f5:cf:
         0f:0c:72:32:87:c6:f0:44:bb:53:72:6d:43:f5:26:48:9a:52:
         67:b7:58:ab:fe:67:76:71:78:db:0d:a2:56:14:13:39:24:31:
         85:a2:a8:02:5a:30:47:e1:dd:50:07:bc:02:09:90:00:eb:64:
         63:60:9b:16:bc:88:c9:12:e6:d2:7d:91:8b:f9:3d:32:8d:65:
         b4:e9:7c:b1:57:76:ea:c5:b6:28:39:bf:15:65:1c:c8:f6:77:
         96:6a:0a:8d:77:0b:d8:91:0b:04:8e:07:db:29:b6:0a:ee:9d:
         82:35:35:10
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

从文件中删除上面的整个代码片段并保存后,错误消失了。


小智 19

我遇到了同样的问题,因为我运行的是旧版本的 Windows 版 Git (2.15.0)。将 Git 更新到最新版本(2.33)后,问题得到解决。

原因:旧版本的 Git 不接受来自 Let's Encrypt 的过期根证书。


小智 15

我在Ubuntu\xc2\xa014.04 LTS (Trusty Tahr) 服务器上遇到了同样的问题。

\n

这个问题影响了PHP 等的cURL调用。

\n

示例:从简单的curl命令行,

\n
curl https://curl.se/ca/cacert.pem\n
Run Code Online (Sandbox Code Playgroud)\n

我收到证书过期消息。这是由于旧的 Let's Encrypt 证书过期。dst-root-ca-x3-expiration-2021 年 9 月

\n

所以,这是一个简单的工作解决方案:

\n

编辑文件/etc/ca-certificates.conf

\n

!找到并注释这样的行:

\n
!mozilla/DST_Root_CA_X3.crt\n
Run Code Online (Sandbox Code Playgroud)\n

或者运行以下命令自动注释证书:

\n
sudo sed -i -e \'s/mozilla\\/DST_Root_CA_X3\\.crt/!mozilla\\/DST_Root_CA_X3\\.crt/g\' /etc/ca-certificates.conf\n
Run Code Online (Sandbox Code Playgroud)\n

保存文件

\n

更新证书:

\n
sudo update-ca-certificates\n
Run Code Online (Sandbox Code Playgroud)\n

一切都完成了......它正在工作,并且没有任何需要改变其他事情......

\n


zer*_*ewl 13

在我们的Windows测试客户端上,我们必须将Git更新到最新版本。

从 Git 2.16.1(2) 开始你可以使用

git update-git-for-windows
Run Code Online (Sandbox Code Playgroud)

在 2.14.2 和 2.16.1 之间的版本中,命令是

git update
Run Code Online (Sandbox Code Playgroud)

另请参阅:如何将 Windows 上的 Git 升级到最新版本


小智 6

对于那些在 Ubuntu 上运行服务器并使用Certbot管理证书的用户,我已使用 ISRG Root X1 强制进行续订。这样,新证书就不包含 DST Root CA X3 链,这对我们来说是成功的。

为此,首先检查您的 Certbot 版本是否 < 1:

sudo certbot --version
Run Code Online (Sandbox Code Playgroud)

如果是这样,您必须删除它并使用Snap重新安装:

sudo apt-get remove -y certbot python3-certbot-apache
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Run Code Online (Sandbox Code Playgroud)

重新安装后,或者如果您的 Certbot 版本 > 1,请强制续订:

sudo certbot renew --force-renewal --preferred-chain "ISRG Root X1"
Run Code Online (Sandbox Code Playgroud)

我还使用DigiCert SSL 安装诊断工具在续订之前和之后检查我的证书,以验证 DST X3 链是否已删除。