自定义端口 (Nginx 或 apache) 上的 Certbot (LetsEncrypt)

自定义端口 (Nginx 或 apache) 上的 Certbot (LetsEncrypt)

我发现了很多类似的问题,人们问如何在不同的端口(80/443 除外)上设置 SSL,即1234端口。然而,所有的答案都是这样的use redirectionproxying requestsdns-validation (instead of http)使用替代方法.然而,你找不到哪怕一个答案 以 StackExchange 方式,我的意思是新手应该一步一步地如何去做。

但是,请注意,重定向并不是解决方案,因为在 80/443 上,一个人可能有一个常规网站,但在 1234 端口上有一个完全不同的应用程序。所以,仅仅从“重定向”到123480搞乱网站,对吗?

答案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 执行的具体步骤:

  1. 按照@Esa 所说生成证书。
  2. 前往/etc/apache2/ports.conf并更改80443到您想要的任何端口
  3. 还将/sites-available/example.comVirtualHost 更改为所需端口。确保有 SSL 文件路径的命令(由 certbot 安装产生)
  4. systemctl restart apache2

需要的人WordPress,确保重定向不会重定向到旧端口。在 WP Dashboard>Settings 中更改之前,您可以在“wp-config”中设置:

define('WP_SITEURL','https://example.com:1234/');
define('WP_HOME','https://example.com:1234/');

相关内容