Общий порт Apache + OpenVPN находится в конфликте с Certbot Let's Encrypt

У меня есть 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 нет мой настоящий домен

2
задан 14 September 2017 в 22:27

1 ответ

Английская версия:

Давайте возьмем maxattax.com в качестве примера.

  1. 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
    
  2. проверьте, автовозобновляют ли работы успешно.

    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
  1. 验证自动更新 , 如果没有报错 , 就 ХОРОШО 了。

    sudo certbot renew --dry-run
    

注意:

Apache 检查 配置文件 /etc/apache2/ports.conf 是否被 certbot 修改过.

我网站打不开 , 就是因为该文件里面 , 被 certbot 重复添加了 Слушают 命令。

- tls-sni-01-port

3
ответ дан 14 September 2017 в 22:27

Другие вопросы по тегам:

Похожие вопросы: