我正在尝试在自定义端口上启用 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
Let's encrypt http-01 挑战需要端口 80 来交换验证数据。https 服务器从未使用过。端口 80 是硬性要求。如果那不是一个选项,那么 DNS 是唯一的其他方法。
您应该先使用测试服务器,直到设置正确(较低的速率限制,甚至没有限制),然后再切换到生产服务器。
类似问题:https://community.letsencrypt.org/t/port-4434-instead-of-443/61349