У меня есть Apache, на котором размещены некоторые файлы, которые каждый может увидеть, и защитил его с помощью HTTPS. У меня также есть хост OpenVPN. Так как некоторые сети блокируют исходящие порты (например, 1194), я использовал функцию port-share
внутри OpenVPN для маршрутизации трафика HTTP через OpenVPN и к Apache. Делая это, я все еще могу разместить свой сайт на порту 443, одновременно подключаясь к VPN через (почти) всегда открытый порт 443.
Apache просто изменил свой порт HTTPS на порт 4443, и OpenVPN будет решить, какой трафик будет отправлен с 443 по 4443 самостоятельно.
Однако мой сервер Apache использует сертификат Let's Encrypt и Certbot для автоматического обновления. Из того, что я могу сказать, это совместное использование портов вызывает некоторые проблемы, и Certbot не может автоматически обновлять автоматически. Она выдаст эту ошибку, если попытается при совместном использовании порта:
Attempting to renew cert (maxattax.com) from /etc/letsencrypt/renewal/maxattax.com.conf produced an unexpected error: Failed authorization procedure. maxattax.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Error getting validation data, www.maxattax.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Error getting validation data. Skipping.
Если я изменю конфигурацию, чтобы Apache работал на порте 443 вместо 4443 и отключил OpenVPN, Certbot сможет возобновить снова .
У меня такой вопрос: как я могу сохранить OpenVPN на порту 443, Apache HTTPS на порту 443 и по-прежнему разрешать Certbot автоматически обновляться?
Соответствующие части /etc/openvpn/server.conf
:
port 443
proto tcp
port-share localhost 4443
Содержание /etc/apache2/ports.conf
:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
# Modified to port 4443 for OpenVPN passthrough
<IfModule ssl_module>
Listen 4443
</IfModule>
<IfModule mod_gnutls.c>
Listen 4443
</IfModule>
Содержание /etc/apache2/sites-enabled/000-default-le-ssl.conf
:
<IfModule mod_ssl.c>
<VirtualHost *:4443>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
#SSLCertificateFile /etc/letsencrypt/live/maxattax.com/fullchain.pem
#SSLCertificateKeyFile /etc/letsencrypt/live/maxattax.com/privkey.pem
SSLCertificateKeyFile /etc/letsencrypt/live/maxattax.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/maxattax.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/maxattax.com/fullchain.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ServerName maxattax.com
ServerAlias www.maxattax.com
</VirtualHost>
</IfModule>
PS: maxattax.com
нет мой настоящий домен
Английская версия:
Давайте возьмем maxattax.com в качестве примера.
certbot commandline: добавляют дополнительные флаги для просьбы сертификата SSL
sudo certbot certonly --apache --tls-sni-01-port 4443 --allow-subset-of-names --cert-name maxattax.com -d maxattax.com -d www.maxattax.com
После успешной операции certbot конфигурационный файл обновления сохранит опции и флаги, которые мы просто использовали для следующего автоматического обновления.
/etc/letsencrypt/renewal/maxattax.com.conf
проверьте, автовозобновляют ли работы успешно.
sudo certbot renew --dry-run
Если никакие отказы не появляются, сделанное задание!
примечание:
Проверьте если /etc/apache2/ports.conf
редактируется certbot.
Мой веб-сайт получил ошибку SSL, потому что дублирующаяся команда "Listen" была добавлена certbot.
中文版 : maxattax.com 为例。
完成 : 在 апачский 使用自定义端口 (非443 端口 ) 的情况下 ,certbot возобновляют 成功。
Апачский 监听 4443 端口 , certbot 自动更新证书不报错。 :openvpn 443 , 443 apache;
步骤 : 1. 使用新命令行申请证书
sudo certbot certonly --apache --tls-sni-01-port 4443 --allow-subset-of-names --cert-name maxattax.com -d maxattax.com -d www.maxattax.com
成功后 , 对应命令行使用的参数会保存到 возобновляют 配置文件
/etc/letsencrypt/renewal/maxattax.com.conf
验证自动更新 , 如果没有报错 , 就 ХОРОШО 了。
sudo certbot renew --dry-run
注意:
Apache 检查 配置文件 /etc/apache2/ports.conf
是否被 certbot 修改过.
我网站打不开 , 就是因为该文件里面 , 被 certbot 重复添加了 Слушают 命令。