Nginx

重定向 SSL 證書請求 nginx

  • June 13, 2017

我家有兩台電腦。computer1正在接收所有 http(s) 請求(從框中)並包含域的網站domain1.com。並且computer2有域名的網站domain2.com

所以我在nginxdomain2.com.conf的文件夾中添加了一個:conf.d``computer1

server {
   listen 443;

   server_name *.domain2.com domain2.com;

   location / {
       proxy_pass https://192.168.1.22:$server_port/$uri$is_args$args;
       proxy_set_header Host $host:$server_port;
   }
}

問題是當我嘗試訪問時domain2.com,返回的 SSL 證書是來自domain1.com.

我在Google上搜尋了指示 SSL 證書在哪裡的方式,我發現:

ssl on;
ssl_certificate <path_to_certificate>;
ssl_certificate_key <path_to_certificate>;

但顯然,問題在於證書在computer2而不是在computer1 上。如何將 SSL 證書請求重定向到computer2?我沒有找到解決方案,也許我有錯誤的關鍵字。

非常感謝你。

EDIT1:根據這個執行緒Nginx 代理到後端與 SSL 客戶端證書身份驗證。我已將此行添加proxy_set_header X-SSL-CERT $ssl_client_cert;到 domain2.com.conf。但它仍然無法正常工作。

EDIT2:根據評論,這裡是 domain1.com 的配置文件: domain1.com.conf

server {
   listen 80;
   listen [::]:80;
   server_name domain1.conf;

   access_by_lua_file /usr/share/ssowat/access.lua;

   include conf.d/cvrd.fr.d/*.conf;

   location /yunohost/admin {
       return 301 https://$http_host$request_uri;
   }

   access_log /var/log/nginx/domain1.com-access.log;
   error_log /var/log/nginx/domain1.com-error.log;
}

server {
   listen 443 ssl;
   listen [::]:443 ssl;
   server_name domain1.com;

   ssl_certificate /etc/yunohost/certs/domain1.com/crt.pem;
   ssl_certificate_key /etc/yunohost/certs/domain1.com/key.pem;
   ssl_session_timeout 5m;
   ssl_session_cache shared:SSL:50m;
   ssl_prefer_server_ciphers on;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;

   add_header Strict-Transport-Security "max-age=31536000;";

   # Uncomment the following directive after DH generation
   # > openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048
   #ssl_dhparam /etc/ssl/private/dh2048.pem;

   access_by_lua_file /usr/share/ssowat/access.lua;

   include conf.d/domain1.com.d/*.conf;

   include conf.d/yunohost_admin.conf.inc;
   include conf.d/yunohost_api.conf.inc;
}

在 http(s) 級別做事,您將需要電腦 1 上域 2 的證書和私鑰。這是因為第一台電腦正在終止 SSL 連接。您無法通過代理電腦/網站傳遞此資訊。

但是,您可以使用 TCP 負載平衡器而不是 http 負載平衡器,而無需將證書和私鑰放在電腦上。TCP 負載平衡器只是在不終止 SSL 連接的情況下傳遞數據包。你可以在這裡閱讀 Nginx 指南

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