1. 概要
現在、openssl には個人情報が漏洩する脆弱性が存在しており、関係するマシンが多く、環境も大きく異なるため、修復方法も異なります。多くのサーバーは nginx を使用して openssl を静的にコンパイルし、openssl を nginx に直接コンパイルします。つまり、openssl をアップグレードするだけでは効果がありません。nginx は外部 openssl ダイナミック リンク ライブラリをロードしません。nginx は再コンパイルする必要があります。
2. nginx が静的にコンパイルされているかどうかを確認する
nginx が静的にコンパイルされた openssl であるかどうかを確認するには、次の 3 つの方法があります。
2.1 nginx コンパイル パラメータの表示
次のコマンドを入力して、nginx コンパイル パラメータを表示します:
# ./sbin/nginx -v
コンパイル パラメータに --with-openssl が含まれている場合=...、以下に示すように、nginx が openssl を静的にコンパイルすることを示します。
nginx version: nginx/1.4.1 built by gcc 4.4.7 20120313 (red hat 4.4.7-3) (gcc) tls sni support enabled configure arguments: --prefix=/opt/app/nginx --with-http_ssl_module --with-openssl=/opt/app/openssl-1.0.1e --add-module=/opt/app/ngx_cache_purge-2.1
2.2 nginx の依存ライブラリを確認する
さらに確認するには、プログラムを確認してください。依存ライブラリ、次のコマンドを入力します:
# ldd `which nginx` | grep ssl
Display
libssl.so.10 => /usr/lib/libssl.so.10 (0xb76c6000)
注: 出力に libssl.so のファイル () が含まれていない場合は、静的にコンパイルされていることを意味します。 openssl
openssl を決定するコマンドを入力して、ライブラリが属する openssl のバージョンを確認しますが、詳細は省略します。たとえば、1.0.1e.5.7 である必要がありますが、1.0.1e のみが存在します。出力:
# strings /usr/lib/libssl.so.10 | grep "^openssl " openssl 1.0.1e-fips 11 feb 2013
2.3 nginx で開かれたファイルを確認する
nginx で開かれたファイルが静的にコンパイルされているかどうかを確認することもできます。次のコマンドを入力します。
# ps aux | grep nginx # lsof -p 111111<这里换成nginx的进程pid> | grep sslopenssl ライブラリ ファイルが開かれていない場合は、次の図に示すように、openssl が静的にコンパイルされていることを意味します:
3 nginx の再コンパイル
インターネット企業では nginx のバージョンが統一されておらず、各部門が業務ニーズに応じて対応するプラグインを選択し、独自にコンパイルしています。コンパイル時にプラグインに注意を払う必要があり、一部のプラグインをコンパイルすることを忘れずに、nginx の機能を変更しないようにしてください。
以上がOpenSSL のセキュリティ脆弱性に対して Nginx サーバーを調整する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。