我发现了很多类似的问题,人们问如何在不同的端口(80/443 除外)上设置 SSL,即1234
端口。然而,所有的答案都是这样的use redirection
或proxying requests
或dns-validation (instead of http)
或使用替代方法.然而,你找不到哪怕一个答案 以 StackExchange 方式,我的意思是新手应该一步一步地如何去做。
但是,请注意,重定向并不是解决方案,因为在 80/443 上,一个人可能有一个常规网站,但在 1234 端口上有一个完全不同的应用程序。所以,仅仅从“重定向”到1234
会80
搞乱网站,对吗?
答案1
让 Nginx 占用 80 端口完全没问题HTTP-01 挑战然后在另一个 Web 应用程序甚至另一个服务器软件上使用使用它创建的证书。它不需要执行任何反向代理来为 提供服务http://example.com/.well-known/acme-challenge/
,例如
server {
listen 80;
server_name example.com;
location /.well-known/acme-challenge/ {
alias /var/www/letsencrypt/.well-known/acme-challenge/;
}
location / {
return 404;
}
}
此外,您根本不需要监听端口 80 的 Web 服务器,因为 Certbot 可以使用其自己的内置 Web 服务器来处理挑战:
sudo certbot certonly --standalone --preferred-challenges http -d example.com
答案2
为了扩展@Esa 的回答,下面是我为 Apache 执行的具体步骤:
- 按照@Esa 所说生成证书。
- 前往
/etc/apache2/ports.conf
并更改80
或443
到您想要的任何端口 - 还将
/sites-available/example.com
VirtualHost 更改为所需端口。确保有 SSL 文件路径的命令(由 certbot 安装产生) systemctl restart apache2
需要的人WordPress,确保重定向不会重定向到旧端口。在 WP Dashboard>Settings 中更改之前,您可以在“wp-config”中设置:
define('WP_SITEURL','https://example.com:1234/');
define('WP_HOME','https://example.com:1234/');