
私は、HTTP を話すアプリケーションの HTTPS を処理するために、リバース プロキシとして nginx を使用しています。これは今のところうまく機能していますが、アップストリーム サーバーから受け入れる証明書の種類を制限できるようにする必要があります。通常の検証チェックに加えて、名前制約またはポリシー マッピングのある証明書を拒否したり、特定の拡張機能が重要としてマークされている場合に証明書を拒否したりできるようにする必要があります。
opensslでは、これはverify_callback
のSSL_CTX_set_verifyx509 拡張機能を取得し、何が存在し、何が重要であるかを確認します。
以下のことは可能ですか?
a) nginxの設定で証明書の拡張にこのような制限を設定するのですか?ngx_http_ssl_モジュールopenssl にいくつかの構成オプションを渡すために使用されるディレクティブがありますssl_conf_command
が、これがリバース プロキシに関連しているかどうか、または「カスタム」証明書検証が可能かどうかはわかりません。
または
b) アップストリームから受信した証明書に対して追加の検証を実行し、失敗した場合は接続を切断できるカスタム モジュールを作成しますか? モジュールの動作にはあまり詳しくないので、これが潜在的な解決策である場合は、アドバイスをいただければ幸いです。
または
c) これを実現するには、openssl 構成ファイルを変更しますか? おそらく、これらの制限を openssl レベルで設定し、nginx にまったく変更を加えずに済む可能性があります。
私の設定ファイルの関連部分は次のようになります。
http {
keepalive_timeout 65;
access_log nginx_access.log;
server {
listen 12312;
location / {
...
proxy_pass https://<ip_address_of_upstream_server>;
proxy_redirect https://<<ip_address_of_upstream_server>> http://localhost:12312;
proxy_ssl_certificate certs/client-cert.pem;
proxy_ssl_certificate_key certs/client-key.pem;
proxy_ssl_trusted_certificate certs/root.pem;
proxy_ssl_verify on;
...
}
}
}
ありがとう!