nginx のカスタム ポートに SSL を設定する - letsencrypt

nginx のカスタム ポートに SSL を設定する - letsencrypt

カスタムポートでSSLを有効にしようとしています(443ではありません)、ウェブページを運営しています。検索してみましたが、役に立つ情報はあまり見つかりませんでした。

サーバーには変更できないポートがあります。外部: 26143、内部: 80。

サーバーにアクセスするには (SSL なし)、example.com:26143 と入力します。システムはこれをポート 80 への接続として認識します。

このポートで SSL を有効にするには、証明書 (Let's Encrypt) をどのように設定すればよいでしょうか?


テストの結果、何をしても、26143に設定しても、ポート80でのみサーバーにアクセスするようです。

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:26143 ではなく、example.com:80 からのアクセスです。また、DNS レコードを変更する権限がありません。


私の経験では、Let's Encrypt と SSL は少しわかりにくく、レート制限と相まって、理解できるほどトラブルシューティングを行うことができません。

可能であることはわかっていますが、どのように、または何を間違っているのかがわかりません。

ご協力いただければ幸いです

答え1

Let's encrypt http-01 チャレンジでは、検証データを交換するためにポート 80 が必要です。https サーバーは使用されません。ポート 80 は必須です。これがオプションでない場合は、DNS が唯一の方法です。

セットアップが正しく完了するまで (レート制限を少なくするか、制限をなくす)、まずテスト サーバーを使用する必要があります。その後、実稼働サーバーに切り替えます。

同様の質問:https://community.letsencrypt.org/t/port-4434-instead-of-443/61349

関連情報