발행자의 권한을 로컬에서 확인할 수 없습니다


19

wget 또는 curl을 사용하여 https URL을 열 수 없습니다.

$ wget https://www.python.org
--2015-04-27 17:17:33--  https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
  Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.

$ curl https://www.python.org
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.

이것은 CentOS 5.5에서 wget 1.12 및 curl 7.30.0을 사용하고 있습니다. 로컬 인증서 저장소에 문제가있는 것 같지만 여기서 진행하는 방법을 모르겠습니다. 어떤 아이디어?

업데이트 : openssl 패키지를 0.9.8e-12.el5_4.6에서 0.9.8e-33.el5_11로 업그레이드 한 후 다른 오류가 발생합니다.

$ wget https://pypi.python.org
--2015-04-28 10:27:35--  https://pypi.python.org/
Resolving pypi.python.org (pypi.python.org)... 103.245.222.223
Connecting to pypi.python.org (pypi.python.org)|103.245.222.223|:443... connected.
ERROR: certificate common name "www.python.org" doesn't match requested host name "pypi.python.org".
To connect to pypi.python.org insecurely, use '--no-check-certificate'.

루트 인증서가 ca-certificates패키지 에 있다고 생각합니다 . 이 패키지가 설치되어 있습니까? 다시 설치해보십시오. 이것이 문제가 아닌 경우 strace -o /tmp/wget.strace wget https://www.python.org결과 추적을 실행 하고 게시하면 문제의 위치를 ​​알려줍니다.
Gilles 'SO- 악마 그만'

@Gilles-openssl 패키지를 0.9.8e-12.el5_4.6에서 0.9.8e-33.el5_11로 업그레이드했는데 오류가 사라졌습니다 (아마 루트 인증서가 다시 설치 되었습니까?).하지만 이제 다른 오류가 있습니다.
aco

이 특정 사이트의 일시적인 오류처럼 보입니다. 다른 사이트가 작동합니까?
Gilles 'SO- 악마 그만'

@Gilles-다른 웹 사이트도 작동하지 않습니다. 예를 들어 Google은 다음과 같은 오류를 반환합니다. 인증서 공통 이름 "google.com"이 요청 된 호스트 이름 "www.google.com.au"와 일치하지 않습니다.
aco

Selinux를 비활성화하는 동일한 문제를 해결할 수 있습니다 : crypt.gen.nz/selinux/disable_selinux.html Cheers!

답변:




2

wget1.14 이전 버전에서는 SAN (Subject Alternative Name) *을 지원하지 않습니다. PyPI는 인증서의 CN 대신 SAN을 사용하며 wget이 불일치를 막고 있습니다. wget을 업그레이드하면 문제가 해결됩니다.

* 또는 SNI (Server Name Indication)-여기에 어떤 것이 적용되는지 잘 모르겠습니다.

참고 문헌 :


1

해결책 1 :

openssl s_client -connect whateversite.com:443 -debug 

인증서 키를 가져 와서에 복사하십시오 /etc/ssl/certs.

$ wget https://www.python.org --ca-certificate=/etc/ssl/certsfile

안전하지 않은 방법으로 가고 싶다면 해결책 2를 시도하십시오.

해결책 2 :

$ wget https://www.python.org --no-check-certificate

또는 사용 Curl

$ curl https://www.python.org --insecure

9
“의사, 나는 왼쪽 다리를 밟을 수 없습니다. — 해결책 1 : 의자에 가까이 앉을 필요가 없도록 필요한 것을 의자 가까이로 옮기십시오. 해결책 2 : 홉.”아니요, 해결책은 문제를 해결하는 것입니다. 여기에서 루트 CA 인증서를 복구하거나 다시 설치해야합니다.
Gilles 'SO- 악마 중지'

4
이것은 자체 서명 된 자체 발급 인증서에만 유효합니다.
Pavel Niedoba

1
네, 이것은 나쁜 생각입니다. 솔루션 1도 안전하지 않습니다 . 이 시점부터 인증서를 자동으로 신뢰함으로써 wget의 검사를 생략하면됩니다. wget이 액세스 할 수있는 루트 인증서를 실제로 수정하여 근본적인 문제를 해결해야합니다.
Andrew Ferrier

sysadmins가 손상된 루트 인증서 목록 또는 draconian 보안 설정을 사용하도록 강제하는 경우에만이 방법을 사용할 수 있지만 증오 할 가치는 없습니다.
nurettin

0

서버에서 시간을 업데이트하십시오. 잠시만이 문제가 발생할 수 있습니다!

확인 : date

Redhat / CentOS 6/7 yum -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

우분투 / 데비안 apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org


0

echo "check_certificate = off">> ~ / .wgetrc


1
이것은 제안하기에는 다소 위험합니다.
ploth

이것은 wget명령 에만 해당되며 해결 방법이 아니라 해결 방법입니다.
mrc02_kr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.