2012-04-21 12 views
2

私は、NginxがFastCGIワーカーのリバースプロキシとして機能する3つのフロントエンドRailsサーバーの負荷分散を行っています。昨日、私たちの証明書が失効し、私はGoDaddyから新しい証明書を取得し、それをインストールしました。静的リソースに直接アクセスすると、更新された証明書が表示されますが、「仮想サブドメイン」からアクセスすると古い証明書が表示されます。私のnginx設定は私の新しい連鎖証明書を引用しているだけなので、私は古い証明書がどのように表示されているのだろうかと思っています。私はディレクトリからも削除しました。ワニス/ 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)の「バンドル」 公開鍵(CA証明書を使用して、デフォルトでSSL証明書の検証を行い、 )。デフォルトの バンドルファイルが適切でない場合は、代替ファイル を--cacertオプションを使用して指定できます。 この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

のBa DUMチン。私の標準化されていないロードバランサはSSL終了のために実際にnginxを実行していました。私はこれに気付かなかったが、私は他のすべてを正しくしたと思う。ポイントは、取得時に操作を引き継ぎ、標準化し、文書化することです!そこにいくつかの本当に奇妙なエンジニアがあります:)