web-dev-qa-db-ja.com

wgetエラー:「xyz」の証明書は信頼されておらず、有効期限が切れています

私はDebian 10バスターサーバーを持っています。これは、同一のハードウェア/ソフトウェア構成の1つです。私はそれらをデプロイするスクリプトを使用していますが、それらはすべて同じです。ただし、wgetを使用すると、そのうちの1つがエラーをスローします。

# wget https://mirrors.Edge.kernel.org/pub/linux/kernel/v5.x/linux-5.6.15.tar.xz
--2020-05-30 12:49:20--  https://mirrors.Edge.kernel.org/pub/linux/kernel/v5.x/linux-5.6.15.tar.xz
Resolving mirrors.Edge.kernel.org (mirrors.Edge.kernel.org)... 147.75.69.165, 2604:1380:1000:8100::1
Connecting to mirrors.Edge.kernel.org (mirrors.Edge.kernel.org)|147.75.69.165|:443... connected.
ERROR: The certificate of ‘mirrors.Edge.kernel.org’ is not trusted.
ERROR: The certificate of ‘mirrors.Edge.kernel.org’ has expired.

私がやったこと:

  • SSL証明書が有効であることを確認した
  • まったく同じコマンドが他のサーバーでも機能することを確認
  • システムの日付を確認し、正しいことを確認した。
  • Resolv.confをチェックし、他と同じ8.8.8.8 8.8.4.4の構成
  • 名前解決を手動でチェックし、正常に動作しました
  • 再インストールapt-get install --reinstall ca-certificates
  • ランupdate-ca-certificates --fresh
  • ランc_rehash
  • 使用されたカール、エラーなしで正常に動作し、正しいSSL有効期限を示します

問題は私が言うことができることからのみ生じているようです。回避策は必要ありません。解決策が必要なので、このサーバーが正常に動作していると確信しています。

2
ctrlbrk

--no-dns-cacheを使用して自分の問題を解決することができました

# wget --no-dns-cache --debug https://mirrors.Edge.kernel.org/pub/linux/kernel/v5.x/linux-5.6.15.tar.xz

この後、壊れたファイルを更新したようです。 --no-dns-cacheなしでも動作するようになりました。奇妙ですが、安定しているようです。

0
ctrlbrk

F-droid.orgにも同じ症状があります。

% wget 'https://f-droid.org/F-Droid.apk'
--2020-06-03 14:10:18--  https://f-droid.org/F-Droid.apk
Resolving f-droid.org (f-droid.org)... 217.160.165.113, 148.251.140.42
Connecting to f-droid.org (f-droid.org)|217.160.165.113|:443... connected.
ERROR: The certificate of ‘f-droid.org’ is not trusted.
ERROR: The certificate of ‘f-droid.org’ has expired.

私の場合(Debian 9ストレッチ)、curlも機能しません。

% curl 'https://f-droid.org/F-Droid.apk'
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

Wgetソースを見ると、エラーがgnutls_certificate_verify_peers2によって返されたステータスフラグから発生していることがわかります。 can gnutlsに証明書検証の詳細を表示するように要求します

% gnutls-cli f-droid.org -p 443
Processed 151 CA certificate(s).
Resolving 'f-droid.org:443'...
Connecting to '217.160.165.113:443'...
- Certificate type: X.509
- Got a certificate list of 3 certificates.
- Certificate[0] info:
 - subject `CN=f-droid.org,OU=PositiveSSL,OU=Domain Control Validated', issuer `CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB', serial 0x02a8508e042b9f065fafadd87cd7d103, RSA key 2048 bits, signed using RSA-SHA256, activated `2019-09-17 00:00:00 UTC', expires `2020-09-16 23:59:59 UTC', key-ID `sha256:e97ccbf3c188b5cf69a83ed0fc39b001ce1688a62b573193cef3f74984c7d703'
    Public Key ID:
            sha1:638f93856e1f5edfcbd40c46d4160cff21b0713a
            sha256:e97ccbf3c188b5cf69a83ed0fc39b001ce1688a62b573193cef3f74984c7d703
    Public key's random art:
            +--[ RSA 2048]----+
            |           o o+o.|
            |            *...o|
            |           E ..+ |
            |         .  ... o|
            |        S .   o .|
            |       o *   . o.|
            |        * o .  .o|
            |       . + o .o. |
            |          o   .oo|
            +-----------------+

- Certificate[1] info:
 - subject `CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB', issuer `CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US', serial 0x7d5b5126b476ba11db74160bbc530da7, RSA key 2048 bits, signed using RSA-SHA384, activated `2018-11-02 00:00:00 UTC', expires `2030-12-31 23:59:59 UTC', key-ID `sha256:e1ae9c3de848ece1ba72e0d991ae4d0d9ec547c6bad1dddab9d6beb0a7e0e0d8'
- Certificate[2] info:
 - subject `CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US', issuer `CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE', serial 0x13ea28705bf4eced0c36630980614336, RSA key 4096 bits, signed using RSA-SHA384, activated `2000-05-30 10:48:38 UTC', expires `2020-05-30 10:48:38 UTC', key-ID `sha256:c784333d20bcd742b9fdc3236f4e509b8937070e73067e254dd3bf9c45bf4dde'
- Status: The certificate is NOT trusted. The certificate chain uses expired certificate. 
*** PKI verification of server certificate failed...

したがって、問題はサーバーから提供されたUSERTrust RSA Certification Authority証明書ですf-droid.org。これは、4日前に有効期限が切れたAddTrust External CA Rootによって署名された中間証明書です。

Debian ca-certificatesパッケージには、USERTrust RSA証明機関の自己署名(ルート)証明書があります:

% openssl x509 -inform PEM -in /usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt -text | grep -A2 Validity
    Validity
        Not Before: Feb  1 00:00:00 2010 GMT
        Not After : Jan 18 23:59:59 2038 GMT

...しかし、gnutlsはサーバーによって提供された期限切れの証明書によって混乱しているため、エラーが発生します。

あなたの場合(mirrors.Edge.kernel.org)証明書チェーンは次のとおりです。

% gnutls-cli mirrors.Edge.kernel.org -p 443
Processed 151 CA certificate(s).
Resolving 'mirrors.Edge.kernel.org:443'...
Connecting to '147.75.101.1:443'...
- Certificate type: X.509
- Got a certificate list of 3 certificates.
- Certificate[0] info:
 - subject `CN=*.Edge.kernel.org', issuer `CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB', serial 0x00a34d0ccfbf4ea450fe030fd3378f5d68, RSA key 2048 bits, signed using RSA-SHA256, activated `2020-03-16 00:00:00 UTC', expires `2021-03-16 23:59:59 UTC', key-ID `sha256:f3746cf281b6453def23289054e75e26e157bfd9eed5252b76ffdc828b802e41'
    Public Key ID:
            sha1:72d8fc84d0dea848189bc3ff8eb1d47629fd72c0
            sha256:f3746cf281b6453def23289054e75e26e157bfd9eed5252b76ffdc828b802e41
    Public key's random art:
            +--[ RSA 2048]----+
            |                 |
            |       .         |
            |  .   . .        |
            | . =   * +       |
            |  * . o.S o      |
            |   + o =E+       |
            |    = = +..      |
            |   . * o...      |
            |    o.o  o.      |
            +-----------------+

- Certificate[1] info:
 - subject `CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB', issuer `CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US', serial 0x7d5b5126b476ba11db74160bbc530da7, RSA key 2048 bits, signed using RSA-SHA384, activated `2018-11-02 00:00:00 UTC', expires `2030-12-31 23:59:59 UTC', key-ID `sha256:e1ae9c3de848ece1ba72e0d991ae4d0d9ec547c6bad1dddab9d6beb0a7e0e0d8'
- Certificate[2] info:
 - subject `CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US', issuer `CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US', serial 0x01fd6d30fca3ca51a81bbc640e35032d, RSA key 4096 bits, signed using RSA-SHA384, activated `2010-02-01 00:00:00 UTC', expires `2038-01-18 23:59:59 UTC', key-ID `sha256:c784333d20bcd742b9fdc3236f4e509b8937070e73067e254dd3bf9c45bf4dde'
- Status: The certificate is trusted. 

再びUSERTrust RSA Certification Authorityが表示されますが、これは有効期限が切れていない自己署名(ルート)証明書です。 kernel.orgも期限切れの中間証明書を提供していたと思いますが、あなたの手で修正されました。おもう --no-dns-cacheは無関係で、単なる偶然です。

ちなみに、Firefoxは https://f-droid.org を表示します。 Show page info/Securityは、新しい自己署名(ルート)USERTrust証明書を明らかにします:Not after: 18 January 2038, 23:59:59 GMT。つまり、Firefoxはサーバーから提供された有効期限が切れた中間USERTrust証明書を無視し、ローカルで利用可能な有効なルートUSERTrust証明書を使用しました。

解決?サーバーのWebマスターは、サーバー構成から古い中間証明書を削除する必要があります。それまでの間、wgetの代わりにFirefox(または機能する場合はcurl)を使用してください。

更新:f-droidの人々が指摘したように、 gnutlsバグ はすでに修正されています。修正はDebian-securityですぐに行われるはずです。

0
sizif