カスタムポートで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