Nginx

我可以使用 nginx 為不同的位置使用不同的客戶端證書嗎

  • May 12, 2022

我的伺服器上有兩個不同的位置:

  • 伺服器/位置A
  • 伺服器/位置B

我想使用兩個客戶端證書 certA 和 certB 限制對這些位置的訪問。

locationA 只能使用 certA 訪問,而 locationB 只能使用 certB 訪問。

直到現在我使用不同的埠這樣做:

server {

 listen 11111 ssl;
 server_name ServerA;

 ssl_certificate server.crt;
 ssl_certificate_key server.key;

 ssl_client_certificate certA.crt;
 ssl_verify_client optional;


 location /A {
   if ($ssl_client_verify != SUCCESS) {
     return 403;
   }
   alias /www/data/files/A.html;
 }
}

server {

 listen 22222 ssl;
 server_name ServerB;

 ssl_certificate server.crt;
 ssl_certificate_key server.key;

 ssl_client_certificate certB.crt;
 ssl_verify_client optional;


 location /B {
   if ($ssl_client_verify != SUCCESS) {
     return 403;
   }
   alias /www/data/files/B.html;
 }
}

我現在的問題是是否可以將兩個位置都放在同一個埠,例如(伺服器/A 和伺服器/B,而不是伺服器:11111/A 和伺服器:22222/B)?我需要如何建構我的 nginx 配置來實現這一點?

否。證書適用於伺服器塊,因為它必須對應於伺服器名稱。

不能僅對某個位置使用不同的證書。

然而,不同的伺服器塊是您唯一需要的,而且您已經擁有了。只需添加兩個埠為 443 的伺服器塊,使用不同server_name的 s 及其對應的證書。

引用自:https://serverfault.com/questions/1100740