wget이 아닌 컬에 소프트웨어.download.prss.microsoft.com에 대한 신뢰 문제가 있는 이유는 무엇입니까?

wget이 아닌 컬에 소프트웨어.download.prss.microsoft.com에 대한 신뢰 문제가 있는 이유는 무엇입니까?

다음 URL은 microsoft.com 하위 도메인으로 리디렉션됩니다.https://tb.rg-adguard.net/dl.php?go=3dd1ce66 즉, https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=...( ...임의의 토큰으로)

다음을 실행하여 최종 리디렉션 URL을 얻을 수 있습니다.

curl -LsI -o /dev/null -w %{url_effective} "https://tb.rg-adguard.net/dl.php?go=7e583fea

하지만 내가 달리든 말든 상관 wget https://tb.rg-adguard.net/dl.php?go=3dd1ce66없어wget https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=...................

Firefox를 사용하여 파일을 다운로드할 때 인증서 오류가 계속 발생합니다.

wget https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso\?t\=...................
--2022-04-12 14:57:29--  https://software.download.prss.microsoft.com/db/Win10_20H2_v2_EnglishInternational_x64.iso?t=..........................
Resolving software.download.prss.microsoft.com (software.download.prss.microsoft.com)... 152.199.21.175, 2606:2800:233:1cb7:261b:1f9c:2074:3c
Connecting to software.download.prss.microsoft.com (software.download.prss.microsoft.com)|152.199.21.175|:443... connected.
ERROR: The certificate of ‘software.download.prss.microsoft.com’ is not trusted.

서로 다른 애플리케이션(Firefox 및 wget)이 일관되지 않게 작동하는 이유는 무엇입니까? 실제로 인증서를 신뢰하지 않는 이유가 있습니까(그렇다면 Firefox가 인증서를 인식하지 못하는 이유는 무엇입니까) 아니면 wget에 문제가 있습니까?

저는 Fedora 35 x64, Wget 1.21.2 및 Firefox 98.0을 사용하고 있습니다.

답변1

뭐가 고장났어?

다음과 같은 알려진 문제를 발견하신 것 같습니다.https://github.com/dotnet/core/issues/6830마지막 댓글은 이렇습니다.

OneOCSP의 업데이트: 새로운 CAB 포럼 요구 사항으로 인해 OneOCSP는 2022년 5월 31일 이전에 알고리즘을 SHA-256으로 전환합니다.

질문에 따르면 (GnuTLS)는 OCSP URL이 있고 oneocsp.microsoft.com이 SHA1을 사용하여 응답에 서명하기 wget때문에 Microsoft 인증서 수락을 거부합니다 .URI:http://oneocsp.microsoft.com/ocspSHA1의 가치가 평가절하되었습니다그리고 서명에는 사용하지 않는 것이 좋습니다.

틀림없이 wget은 사용자를 안전하게 보호함으로써 옳은 일을 합니다. SHA1은 수년 동안 안전하지 않은 것으로 간주되었으며 이를 사용하여 인증서에 서명하는 것은 몇 년 동안 지원되지 않았습니다.

사실, 이 문제가 더 일찍 발견되고 해결되지 않았다는 것은 매우 놀라운 일입니다. 하지만 OCSP는 x509 인증서 자체보다 사용자에게 덜 눈에 띄는 것 같습니다.

이것이 왜 문제가 됩니까?

OCSP만료 전 인증서 해지 문제를 해결합니다. 인증서에는 서버를 가리키는 OCSP URL이 포함될 수 있습니다. 클라이언트는 이를 읽고 서버에 인증서가 여전히 유효하고 취소되지 않았는지 확인하도록 요청합니다.

서버는 인증서가 유효함을 나타내기 위해 응답에 서명하고 응답은 곧(초 또는 분 단위) 만료됩니다. 따라서 인증서 자체가 유효하더라도 이를 확인하기 위해 OCSP 서버가 계속 있어야 합니다.

하지만 Microsoft의 OCSP 서버는 성능이 좋지 않습니다.

디지털 서명은 실제로 문서의 디지털 지문에 서명하는 것이며 SHA1은 이전에 지문을 생성하는 데 사용되었습니다. 하지만 사람들은 기존 SHA1 지문과 일치하는 새 문서를 만드는 방법을 찾았습니다. 이를 통해 기존 서명과 일치하는 것처럼 보이는 문서를 위조할 수 있습니다!

따라서 GNUTLS는 Microsoft OCSP 서버의 SHA1 서명 응답을 신뢰하지 않기 때문에 일부 Microsoft 인증서 신뢰를 거부합니다. 따라서 인증서 자체가 해지되었는지 여부를 확인할 방법이 없습니다.

내 작품을 보여줘...

openssl을 이용하여 인증서의 OCSP URL을 확인할 수 있었습니다. 먼저 인증서를 받으세요:

openssl s_client -showcerts -servername software.download.prss.microsoft.com -connect software.download.prss.microsoft.com:443 </dev/null

그런 다음 인증서를 파일에 복사하여 붙여넣고 다음을 사용하여 읽습니다.

openssl x509 -in <filename> -text

모자 문제를 해결하기 위해 Google이 어떻게 안내했는지 궁금하시다면:

wgetgnutls 디버깅 옵션을 활성화한 상태 에서 이를 실행했습니다 .

GNUTLS_DEBUG_LEVEL=2 wget --verbose https://tb.rg-adguard.net/dl.php?go=3dd1ce66

이것은진짜긴 디버그 출력은 결국 다음과 같습니다.

gnutls[2]: looking for key purpose '1.3.6.1.5.5.7.3.1', but have '1.3.6.1.5.5.7.3.4'
ERROR: The certificate of ‘software.download.prss.microsoft.com’ is not trusted.

이 오류는 오해의 소지가 있지만 Google을 계속 사용하는 데 더 많은 정보를 제공했습니다.

관련 정보