web-dev-qa-db-fra.com

Port partagé Apache + OpenVPN en conflit avec Certbot de Let's Encrypt

Apache héberge des fichiers que tout le monde peut voir et le sécurise avec HTTPS. J'ai aussi un hôte OpenVPN. Certains réseaux bloquant les ports sortants (tels que 1194), j'ai utilisé la fonction port-share dans OpenVPN pour que le trafic HTTP passe par OpenVPN et Apache. Ce faisant, je peux toujours héberger mon site sur le port 443 tout en étant connecté simultanément à un VPN sur le port (presque) toujours ouvert 443.

Apache a simplement changé son port HTTPS pour le port 4443 et OpenVPN décidera seul quel trafic sera envoyé de 443 à 4443.

Cependant, mon serveur Apache utilise un certificat Let's Encrypt et Certbot pour le renouvellement automatique. D'après ce que je peux dire, ce partage de port pose certains problèmes et Certbot ne peut pas se renouveler automatiquement correctement. Il va cracher cette erreur s'il essaie tout en partage de port:

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.

Si je modifie la configuration pour que Apache s'exécute sur le port 443 au lieu de 4443 et ferme OpenVPN, Certbot est capable de renouveler son renouvellement.

Ma question est la suivante: comment conserver OpenVPN sur le port 443, Apache HTTPS sur le port 443 et toujours autoriser le renouvellement automatique de Certbot?

Parties pertinentes de /etc/openvpn/server.conf:

port 443
proto tcp
port-share localhost 4443

Contenu 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>

Contenu 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'est pas mon domaine réel

2
Maxattax

Version anglaise:

Prenons par exemple maxattax.com.

  1. ligne de commande certbot: ajouter des drapeaux supplémentaires pour demander un certificat 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
    

    Une fois l'opération réussie, le fichier de configuration du renouvellement de certbot enregistrera les options et les indicateurs que nous venons d'utiliser pour le prochain renouvellement automatique.

    /etc/letsencrypt/renewal/maxattax.com.conf
    
  2. vérifier si le renouvellement automatique fonctionne correctement.

    Sudo certbot renew --dry-run
    

Si aucun échec n'apparaît, le travail est fait!

note:

Vérifiez si /etc/Apache2/ports.conf est édité par certbot.

Mon site Web a eu une erreur SSL parce qu'une commande "Listen" en double a été ajoutée par certbot.

中文 版 : 以 域名 : : maxattax.com。

Ache : 在 , Apache 在 , 443 évaluations certbot renew

Openvpn (443) 443 (Apache) Apache (4443) certbot a été ajouté.

: 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. 更新 就 就 OK 了

    Sudo certbot renew --dry-run
    

注意:

Apache 件 文件 /etc/Apache2/ports.conf 被 被 certbot bot.

Bot 打不开 文该 被 被 被 Certbot 被 Écouter

- - tls-sni-01-port

3
hixtao