在 nginx 中為自訂連接埠設定 SSL - LetsEncrypt

在 nginx 中為自訂連接埠設定 SSL - LetsEncrypt

我正在嘗試在自訂連接埠上啟用 SSL(不是 443),運行網頁。透過搜索,我找不到太多有幫助的資訊。

伺服器有不可更改的端口,外部:26143,內部:80。

若要進入伺服器(沒有 SSL),您可以輸入 example.com:26143,系統會將其視為到連接埠 80 的連線。

我如何設定憑證(允許加密)以在此連接埠上啟用 SSL?


從測試來看,無論我做什麼,它都只能存取連接埠 80 上的伺服器,即使我將其設定為 26143

這是啟用 nginx 網站的設定:

server {
    listen 80;
    listen [::]:80;

    root /root/html;

    index index.php;
    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    
        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known {
        root /var/www/ssl/example.com/;
    }
}

我嘗試過的命令是:

certbot --nginx -d example.com:26143
certbot certonly --standalone --preferred-challanges http -d example.com:26143
certbot certonly --standalone --preferred-challenges http -d example.com
certbot certonly --standalone --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --nginx --preferred-challenges http --http-01-port 26143 -d example.com
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com:26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --http-01-port 26143 -m [email protected] --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --preferred-challenges http --http-01-port 26143 -m [email protected] --webroot -w /root/html

進行一些調整,我得到的最常見錯誤是:

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: example.com
   Type:   unauthorized
   Detail: Invalid response from
   https://example.com/.well-known/acme-challenge/ho73up1dR3KU4V37awccOw2T5xsSILWUM365ZnwVEN4
   [159.81.xxx.xxx]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
   2.0//EN\">\n<html><head>\n<title>404 Not
   Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

404是不是在我的系統中,它來自 example.com:80,而不是 example.com:26143。另外,我無權修改 DNS 記錄。


根據我的經驗,讓加密和 SSL 有點令人困惑,加上速率限制,我無法進行足夠的故障排除以理解。

我知道這應該是可能的,我只是不知道我怎麼做和/或做錯了什麼。

任何幫助,將不勝感激

答案1

讓我們加密 http-01 挑戰需要連接埠 80 來交換驗證資料。 https 伺服器從未被使用過。埠 80 是硬性要求。如果這不是一個選擇,那麼 DNS 是唯一的其他方法。

您應該使用一些測試伺服器,直到您的設定正確(較少的速率限制,甚至可能沒有限制),然後首先切換到生產伺服器。

類似問題:https://community.letsencrypt.org/t/port-4434-instead-of-443/61349

相關內容