Nginx

在 nginx 中為自定義埠設置 SSL -letsencrypt

  • August 1, 2021

我正在嘗試在執行網頁的自定義埠**(不是 443)上啟用 SSL。**通過四處搜尋,我找不到太多有用的資訊。

伺服器有不可更改的埠,外部: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 my@mail.com --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com:26143 -m my@mail.com --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --http-01-port 26143 -m my@mail.com --webroot -w /root/html
certbot certonly --noninteractive --agree-tos --cert-name slickstack -d example.com --preferred-challenges http --http-01-port 26143 -m my@mail.com --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 有點令人困惑,再加上速率限制,我無法排除足夠的故障來理解。

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

任何幫助,將不勝感激

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

在設置正確(更少的速率限制,甚至可能沒有限制)之前,您應該使用測試伺服器,然後首先切換到生產伺服器。

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

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