2012-04-21 3 views
2

나는 Nginx가 FastCGI 작업자를위한 역방향 프록시 역할을하는 3 개의 프론트 엔드 레일 서버를 바니시로드 밸런싱했습니다. 어제, 우리 인증서가 만료되었습니다. GoDaddy에서 새 인증서를 받고 설치했습니다. 정적 리소스에 직접 액세스 할 때 업데이트 된 인증서가 표시되지만 "가상 하위 도메인"에서 인증서에 액세스 할 때 이전 인증서가 표시됩니다. 내 nginx 설정은 내 새 체인 인증서를 인용하므로 이전 인증서가 어떻게 표시되는지 궁금합니다. 심지어 디렉토리에서 제거했습니다.Varnish/Nginx 캐시 된 SSL 인증서 미스터리

예 : https://www212.doostang.com/javascripts/base_packaged.js?1331831461 (SSL 아니 인증서 문제) https://asset5.doostang.com/javascripts/base_packaged.js?1331831461 (! 이전 인증서를 사용하는)

  • (지도 www212.doostang.com에) 내가 다시로드, 심지어 중지 및했습니다 -restarted nginx, nginx를 테스트하여 올바른 구성에서 읽었는지 확인하고 새 캐시 파일로 바니시를 다시 시작합니다.

    컬 : 나는 asset5.doostang.com에서 파일을 말릴 때

  • 내가 인증서 오류 수 (60) SSL 인증서 문제는 CA의 인증서가 OK인지 확인합니다. 세부 : 오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 인증서가 여기 자세한 내용 실패 확인 http://curl.haxx.se/docs/sslcerts.html

    컬은 "번들"인증 기관의 (CA) 공개 키를 사용하여 기본적으로 SSL 인증서 확인을 수행합니다 (CA 인증서에서). 기본 파일 번들이 적합하지 않은 경우 --accept 옵션을 사용하여 대체 파일을 지정할 수 있습니다. 이 HTTPS 서버가 번들에 표시된 CA가 서명 한 인증서를 사용하는 경우 인증서에 인증서 문제 (인증서가 만료되었거나 이름이 이 URL의 도메인 이름과 일치하지 않을 수 있음)로 인해 인증서 확인이 실패했을 수 있습니다.). 컬의 인증서 확인을 해제하려면 -k (또는 --insecure) 옵션을 사용하십시오.

  • -k 옵션을 추가하면 요청한 파일이 표시되고 nginx 액세스 로그에서이 파일을 볼 수 있습니다. -k를 제공하지 않으면 nginx 오류가 발생하지 않습니다. nginx는 인증서 오류에 대해 침묵합니다.

10.99.110.27 - - [20/Apr/2012:18:02:52 -0700] "GET /javascripts/base_packaged.js?1331831461 HTTP/1.0" 200 5740 "-" "curl/7.21.3 (x86_64-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18"

나는 내가 생각하는 것은 아래의 nginx를 설정의 관련 부분입니다 넣어했습니다

server { 
    # port to listen on. Can also be set to an IP:PORT 
    listen 443; 
    server_name www.doostang.com, *.doostang.com; 

    passenger_enabled on; 
    rails_env production; 

    ssl on; 
    ssl_certificate /.../doostang_combined.crt; 
    ssl_certificate_key /.../doostang.com.key; 
    ssl_protocols SSLv3; 

    # doc root 
    root /.../public/files; 

    if ($host = 'doostang.com') { 
     rewrite ^/(.*)$ https://www.doostang.com/$1 permanent; 
    } 
} 


# Catchall redirect 
server { 
    # port to listen on. Can also be set to an IP:PORT 
    listen 443; 

    ssl on; 
    ssl_certificate /.../doostang_combined.crt; 
    ssl_certificate_key /.../doostang.com.key; 

    rewrite ^(.*)$ https://www.doostang.com$1; 
} 

답변

1

바 둠 칭. 내 표준화되지 않은로드 밸런서는 SSL 종료를 위해 실제로 실행되는 nginx를 가지고있었습니다. 나는 이것을 깨닫지 못했지만 나는 그 밖의 모든 것을 올바르게했다고 생각한다. 요점은, 인수시 작업을 인수 할 때 표준화하고 문서화하십시오! 거기에 몇 가지 정말 이상한 엔지니어가 있습니다 :)