使用 nginx 代理程式 HTTP 時對憑證擴充功能進行限制

使用 nginx 代理程式 HTTP 時對憑證擴充功能進行限制

我使用 nginx 作為反向代理來處理與 HTTP 通訊的應用程式的 HTTPS。到目前為止,效果很好,但現在我需要能夠限制我從上游伺服器接受的憑證類型。除了通常的驗證檢查之外,我還需要能夠拒絕任何具有名稱限製或策略映射的證書,以及在某些擴展被標記為關鍵時拒絕證書。

在 openssl 中,我相信這可以verify_callback透過SSL_CTX_set_verify透過取得 x509 擴充功能並檢查目前/關鍵內容。

是否有可能:

a) 在 nginx 設定中對憑證擴充功能設定這些限制?似乎是ngx_http_ssl_模組有一個ssl_conf_command指令用於將一些配置選項傳遞給 openssl 但我不確定這是否與反向代理相關或它是否能夠進行“自訂”證書驗證。

或者

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;
      ...
    }
  }
}

謝謝!

相關內容