我目前正在使用以下工具來允許對容器進行基于 Web 的訪問:客戶端 Web 瀏覽器 > Nginx > ShinyProxy > Docker。該服務器在 Ubuntu 22.04 LTS 上運行。Docker 將容器轉發到 ShinyProxy,然后 ShinyProxy 輸出:8080,我使用 Nginx 將來自 URL(和 80)的任何請求反向代理到 443,HTTPS。
我們有幾個在這個系統上運行的網路應用程式,它們運行得很好,但是即使網路應用程式沒有運行并且你得到基本的 404/502 Nginx 錯誤頁面,我似乎也無法確定 HTTPS/SSL 的掛鎖.
無論 Nginx 的關鍵宣告看起來多么簡單,要么我在某處錯過了一步,要么是格式或配置錯誤。
我正在使用基于 ShinyProxy 給出的一些設定的 Nginx 組態檔(https://shinyproxy.io/documentation/security/)而我們的(nginx 的可用站點鏈接到使用 ln -s 啟用的站點)看起來像這個:
server {
listen 80;
server_name ourwebserverurl;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name ourwebserverurl;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log error;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/certs/ourwebserverurl.crt;
ssl_certificate_key /etc/ssl/private/ourwebserverurl.key;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
為了創建密鑰,我們從以下命令開始:
openssl req -sha256 -newkey rsa:2048 -keyout ourserverurl.key.enc -out ourserverurl.csr
這創建了兩個檔案,一個加密的 PEM 密鑰和一個 CSR,我們將 CSR 提供??給了 GlobalSign,后者頒發了一個服務器證書。
Nginx 需要兩個密鑰檔案,第一個在 ssl_certificate 中宣告,是由頒發的服務器 GlobalSign 證書、它們的中間證書和它們的根證書組成的鑰匙串包(中間和根證書在這里找到https://support.globalsign.com/ca- certificate/intermediate-certificates/intranetssl-root-intermediate-certificates)我將它們全部采用正確的 SHA 格式,SHA256。我已將它們連接成以下鏈中的單個 .crt:已發布 > 中級 > 根。雖然將密鑰復制并粘貼到 Web 服務中并不是最好的主意,但我使用 ( https://tools.keycdn.com/ssl ) 對其進行了檢查,并且從該站點的輸出中得到了“未檢測到鏈問題”。
我已經聯系了 GlobalSign,似乎我確實擁有了我應該擁有的所有密鑰,現在只需要配置即可。
現在對于最終的密鑰,即輸出的 key.enc - 我未加密密鑰,并將其更改為 ourserverurl.key,并堅持使用 PEM 格式,盡管我在 .key 中有它。我已經看到一些 Nginx 配置在 .pem 中有它,但是我也有相同的檔案,但檔案擴展名不同,沒有變化。
我嘗試了多種不同的格式,檢查了發布的 GlobalSign 密鑰與我們未加密的私鑰,我在這方面得到了匹配,但 Nginx 不會將顯示為紅色和洗掉線的 HTTPS 更改為漂亮的掛鎖。
感覺就像我擁有所有正確的鍵,但是我不確定我是否已正確配置所有內容。Nginx 告訴我,如果我使用,我的配置中沒有錯誤
sudo nginx -t
我得到這個輸出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
我的防火墻目前對 IPv4 和 IPv6 標準網頁訪問請求的 80 和 443 請求開放。
我覺得我缺少一些配置命令,我不確定打嗝在哪里。
uj5u.com熱心網友回復:
我發現我們的組織從 GlobalSign 向我們頒發了錯誤的證書型別:當它應該是 OrganizationSSL 時,他們給了我們一個 IntranetSSL 證書型別。我使用 OrganizationSSL 中間證書和根證書創建了正確的鏈,并將我新發布的服務器證書放在頂部。鏈檢出,Nginx 檢出,我重新啟動 Nginx,它直接翻轉到掛鎖。
編輯:原來我不需要根證書:我在我的鏈中洗掉了它,只在.crt中使用了頒發的服務器證書 中間證書。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/528455.html
