OCSP 유효성 검사-로컬 발급자 인증서를 가져올 수 없음


17

처음부터 SSL을 처음 사용하고 첫 단계를 수행했습니다. 내 도메인의 RapidSSL에서 SSL 인증서를 구입 한 후 인증서 설치 단계를 수행했습니다. 일반적으로 인증서는 유효하며 웹 서버 (nginx v1.4.6-Ubuntu 14.04.1 LTS)에서 작동하지만 OCSP OCSP를 활성화하려고하면 nginx error.log에 다음 오류가 발생합니다.

인증서 상태를 요청하는 동안 OCSP_basic_verify () 실패 (SSL : 오류 : 27069065 : OCSP 루틴 : OCSP_basic_verify : 인증서 확인 오류 : 오류 확인 : 로컬 발급자 인증서를 가져올 수 없음), 응답자 : gv.symcd.com

커맨드 라인 에서이 명령으로 시도했습니다.

openssl s_client -connect mydomain.tld : 443 2> & 1 </ dev / null

그리고 내 error.log와 같은 "같은"오류가 발생했습니다.

[...] SSL- 세션 : 프로토콜 : TLSv1.2 암호 : ECDHE-RSA-AES256-GCM-SHA384 [...] 시작 시간 : 1411583991 시간 초과 : 300 (초) 반환 코드 확인 : 20 (로컬을 가져올 수 없음) 발급자 인증서)

그러나 GeoTrust Root Certificat을 다운로드하고 다음 명령으로 시도하십시오.

openssl s_client -connect mydomain.tld : 443 -CA 파일 GeoTrust_Global_CA.pem 2> & 1 </ dev / null

확인은 괜찮습니다 :

[...] SSL- 세션 : 프로토콜 : TLSv1.2 암호 : ECDHE-RSA-AES256-GCM-SHA384 [...] 시작 시간 : 1411583262 시간 초과 : 300 (초) 반환 코드 확인 : 0 (ok)

따라서 어떻게 든 GeoTrust Root Cert를 찾을 수 없습니다.

내 nginx 사이트 구성 :

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSL은 그의 설명서에 다음 순서로 ssl.crt에 다음 인증서를 추가해야한다고 썼습니다.

  1. myserver.crt
  2. 중간 CA 번들 (RapidSSL SHA256 CA-G3)
  3. 중급 CA 번들 (GeoTrust Global CA)

그래서 나는 ...

지금은 내가 뭘 잘못하고 있는지 전혀 모른다 ... 잘만되면 여기 누구든지 나를 도울 수있다.

감사합니다!

답변:


17

오류 메시지는 동일하지만이 두 오류는 관련이 없습니다.

[...] SSL- 세션 : 프로토콜 : TLSv1.2 암호 : ECDHE-RSA-AES256-GCM-SHA384 [...] 시작 시간 : 1411583991 시간 초과 : 300 (초) 반환 코드 확인 : 20 (로컬을 가져올 수 없음) 발급자 인증서)

위의 오류는 openssl_client 명령 을 발행했습니다 . Florian Heigl이 설명했듯이 openssl_client에의 Globalsign Root 인증서가 필요하기 때문에이 오류가 발생합니다 /etc/ssl/certs.


인증서 상태를 요청하는 동안 OCSP_basic_verify () 실패 (SSL : 오류 : 27069065 : OCSP 루틴 : OCSP_basic_verify : 인증서 확인 오류 : 오류 확인 : 로컬 발급자 인증서를 가져올 수 없음), 응답자 : gv.symcd.com

이 오류의 경우, 특히 nginx.conf 에 행 을 추가 할 때 nginx ocsp 루틴에 의해 발행되었습니다 ssl_stapling_verify on;.

일부 발췌 여기에 문서ssl_stapling_verify가 오류가 발생 이유를 설명

구문 : ssl_stapling_verify on | 떨어져서;

서버에 의한 OCSP 응답 확인을 활성화 또는 비활성화합니다.

확인이 작동 하려면 ssl_trusted_certificate 지시문을 사용하여 서버 인증서 발급자 인증서, 루트 인증서 및 모든 중간 인증서 를 신뢰할 수있는 것으로 구성해야합니다.

즉, (2) 중간 CA 번들 (RapidSSL SHA256 CA-G3)(3) 중간 CA 번들 (GeoTrust Global CA)ssl_trusted_certificate지정 해야 합니다.

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

그리고 추가 ocsp-chain.crtssl_trusted_certificate지시.


정말 고맙습니다! 나는 이것을 시도했지만 항상 cli 명령으로 테스트했습니다.
kapale

중간 인증은 어디서 구할 수 있습니까?
ingo

1

나는 이것의 일부에만 대답 할 수 있습니다.

openssl s_client -connect mydomain.tld : 443 2> & 1 </ dev / null

/ etc / ssl / certs에 Globalsign Root 인증서가 필요합니다. 인증서 패키지가 있습니다. 설치되어 있습니까?


RapidSSL 및 GeoTrust를 처리 할 때 Globalsign Root 인증서를 사용해야하는 이유를 모르겠습니다. 그들은 Globalsign과 다릅니다 ... 내가 틀렸다면 나를 교정하십시오!
디지털 사이트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.