Porta compartilhada Apache + OpenVPN em conflito com o Vamos Certcreve

1

Eu tenho o Apache hospedando alguns arquivos para todo mundo ver e seguro com HTTPS. Eu também tenho um host OpenVPN. Como algumas redes bloqueiam portas de saída (como 1194), usei o recurso port-share dentro do OpenVPN para ter uma rota de tráfego HTTP através do OpenVPN e para o Apache. Ao fazer isso, ainda posso hospedar meu site na porta 443 e, ao mesmo tempo, estar conectado a uma VPN pela (quase) sempre aberta porta 443.

O Apache simplesmente tem sua porta HTTPS alterada para a porta 4443, e o OpenVPN decidirá qual tráfego será enviado de 443 para 4443 por conta própria.

No entanto, meu servidor Apache usa um certificado Let's Encrypt e o Certbot para renovação automática. Pelo que posso dizer, esse compartilhamento de porta está causando alguns problemas e o Certbot não pode ser renovado automaticamente. Ele vai cuspir esse erro se ele tentar, enquanto o compartilhamento de porta:

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.

Se eu alterar a configuração para fazer o Apache rodar na porta 443 em vez de 4443 e desligar o OpenVPN, o Certbot é capaz de renovar novamente.

Minha pergunta é: como posso manter o OpenVPN na porta 443, o Apache HTTPS na porta 443 e ainda permitir que o Certbot renove automaticamente?

Partes relevantes de /etc/openvpn/server.conf :

port 443
proto tcp
port-share localhost 4443

Conteúdo de /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>

Conteúdo de /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 não é meu domínio real

    
por Maxattax 14.09.2017 / 21:27

1 resposta

2

Versão em inglês:

Vamos usar maxattax.com como exemplo.

  1. linha de comando certbot: adicione sinalizadores adicionais para solicitar o certificado 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
    

    Após a operação bem-sucedida, o arquivo de configuração de renovação do certbot salvará as opções e os sinalizadores que acabamos de usar para a próxima renovação automática.

    /etc/letsencrypt/renewal/maxattax.com.conf
    
  2. verifique se a renovação automática funciona com sucesso.

    sudo certbot renew --dry-run
    

Se nenhuma falha aparecer, trabalho feito!

nota:

Verifique se /etc/apache2/ports.conf é editado pelo certbot.

Meu site recebeu um erro SSL porque um comando duplicado "Listen" foi adicionado pelo certbot.

中文 版 : Max 域名 : maxattax.com 为例。

完成 : 在 apache 非 自 定义 端口 (非 443 cert) 的 情况 下 cert cert cert cert cert cert cert cert cert cert cert cert cert

详情 :: 在 openvpn 监听 3 , 分享 分享 分享 分享 分享 分享 分享 分享 分享 分享 分享 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 监听 实现 实现 实现 实现 实现 实现 实现 实现 实现

步骤 : 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

成功 后 , 命令 行 行 使用 的 参数 会 保存 到 renovar 配置 文件

    /etc/letsencrypt/renewal/maxattax.com.conf
  1. 验证 自动 更新 , 如果 没有 报错 , 就 OK 了。

    sudo certbot renew --dry-run
    

注意:

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

我 网站 打不开 , 就是 因为 该 文件 里面 , 被 certbot 重复 添加 了 Ouvir 命令。

--tls-sni-01-port

    
por hixtao 18.11.2017 / 02:11