cURL과 Iceweasel은 동일한 CA를 가지고 있음에도 불구하고 TLS 인증서 유효성에 동의하지 않습니다.

cURL과 Iceweasel은 동일한 CA를 가지고 있음에도 불구하고 TLS 인증서 유효성에 동의하지 않습니다.

Debian Jessie 8.4 GNU/Linux에서 인증서 확인이 일관되지 않는 문제가 있습니다.얼음 족제비(Debian의 Firefox 파생물) 및곱슬URL 관련https://profile.mensa.org.uk/contact.aspx.

얼음 족제비

방문하다https://profile.mensa.org.uk/contact.aspxIceweasel을 사용하면 오류나 경고가 발생하지 않습니다. 주소 표시줄 왼쪽에 있는 자물쇠 아이콘을 클릭한 후 "추가 정보..." 버튼을 클릭하면 다음 내용이 포함된 창이 나타납니다.

웹사이트 로고
웹사이트:profile.mensa.org.uk
소유자:본 웹사이트는 독점 정보를 제공하지 않습니다.
확인됨:지질 신탁 공사

"인증서 보기" 버튼을 클릭하면 "일반"과 "세부 사항"이라는 두 개의 탭이 있는 창이 나타납니다. 일반 탭에는 다음이 표시됩니다.

본 인증서는 검증되었으며 다음과 같은 목적으로 사용될 수 있습니다.
SSL 클라이언트 인증서
SSL 서버 인증서
발행자
일반 이름(CN) profile.mensa.org.uk
조직(O) <인증서의 일부가 아님>
조직 단위(OU) GT91227394
일련 번호 06:26:4F
발행자
일반 이름(CN) RapidSSL SHA256 CA - G3
조직(O) GeoTrust Inc.
조직 단위(OU) <인증서의 일부가 아님>
유효기간
2015년 5월 8일
시작 16년 6월 9일 종료
지문
SHA-256 지문 9C:F3:D7:B8:96:D6:A5:BC:98:9E:F0:DE:26:63:BD:17:
C5:29:24:C9:02:A9:90: D3:A5:49:AB:10:5D:E8:C0:3C
SHA1 지문

세부 정보 탭을 클릭하면 인증서 계층 구조 필드에 세 가지 수준의 계층 구조가 표시됩니다.

GeoTrust Global CA
  RapidSSL SHA256 CA - G3
    profile.mensa.org.uk

GeoTrust Global CA필드에서 항목을 선택 하고 "내보내기..." 버튼을 클릭한 다음 파일로 저장하면 ~/Documents/organisations/mensa/geotrust_global_ca.pem예상대로 작동합니다. 지문은 다음과 같습니다.

$ openssl x509 -noout -in ~/Documents/organisations/mensa/geotrust_global_ca.pem -fingerprint
SHA1 Fingerprint=DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12

이것을 cURL과 비교해 보겠습니다.

곱슬

방문하다https://profile.mensa.org.uk/contact.aspxcURL을 사용하면 인증서 오류가 발생할 수 있습니다. 다음은 헤더 정보만 가져오려는 자세한 출력입니다.

$ curl -v --head https://profile.mensa.org.uk/contact.aspx
* Hostname was NOT found in DNS cache
*   Trying 93.159.201.114...
* Connected to profile.mensa.org.uk (93.159.201.114) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

cURL은 HTTP를 통한 이 URL과 HTTPS를 통한 다른 도메인에 대해 잘 작동합니다.

$ curl --head http://profile.mensa.org.uk/contact.aspx
HTTP/1.1 302 Found
Date: Sat, 28 May 2016 14:30:56 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Location: /login.aspx?target=%2fcontact.aspx
Set-Cookie: ASP.NET_SessionId=axylcyf2cep2lq4e3brkggln; path=/; HttpOnly
Set-Cookie: WebToolsParam= ; path=/; HttpOnly
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: text/html; charset=utf-8
Content-Length: 151

$ curl --head https://www.mensa.org.uk
HTTP/1.1 200 OK
Date: Sat, 28 May 2016 12:39:56 GMT
Server: Apache
Pragma: no-cache
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: SESS4b296932593725667cea89bf7eb4e462=d10lbmrpju03rccsaftdemiai6; path=/; domain=.mensa.org.uk
Last-Modified: Sat, 28 May 2016 12:39:56 GMT
Content-Type: text/html; charset=utf-8

cURL의 현재 버전에 대한 정보는 다음과 같습니다.

$ curl -V
curl 7.38.0 (i586-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1k zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

/etc/ssl/certsIceweasel에는 자체 CA 저장소가 있지만 위의 자세한 출력에 표시된 것처럼 cURL은 여기에서 인증 기관 인증서를 찾는다고 생각합니다 . 그래서 내 첫 번째 생각은 cURL에 액세스하는 동안 오류가 발생했다는 것입니다.https://profile.mensa.org.uk/contact.aspx/etc/ssl/certsIceweasel이 인식하는 CA 인증서가 부족 하기 때문일 것입니다 : GeoTrust Global CA. 그러나 나는 발견했다/etc/ssl/certs 하다적절한 인증서가 포함되어 있습니다.

$ openssl x509 -noout -in /etc/ssl/certs/GeoTrust_Global_CA.pem -fingerprint
SHA1 Fingerprint=DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12

보시다시피 ~/Documents/organisations/mensa/geotrust_global_ca.pem위와 같은 지문입니다.

그래서 뭔가 다른 일이 벌어지고 있어야합니다. 옵션을 통해 cURL이 두 인증서를 모두 사용하도록 강제하려고 시도했지만 --cacert실패했습니다.

$ curl --cacert ~/Documents/organisations/mensa/geotrust_global_ca.pem --head https://profile.mensa.org.uk/contact.aspx
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

$ curl --cacert /etc/ssl/certs/GeoTrust_Global_CA.pem --head https://profile.mensa.org.uk/contact.aspx
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

내 주요 질문은 다음과 같습니다.cURL과 Iceweasel 사이에 이러한 불일치가 발생하는 이유는 무엇입니까?

두 번째 질문은 다음과 같습니다.이러한 불일치는 Iceweasel 및/또는 cURL에 버그가 있음을 의미합니까?

답변1

profile.mensa.org.uk의 인증서 체인이 올바르게 구성되지 않은 것 같습니다. Firefox 프로필에는 누락된 중간 콘텐츠가 캐시되어 있으므로 작동합니다. 컬은 이를 캐시하지 않습니다.

~에 귀속됨매트 노르도프

관련 정보