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
Version anglaise:
Prenons par exemple maxattax.com.
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
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
更新 就 就 OK 了
Sudo certbot renew --dry-run
注意:
Apache 件 文件 /etc/Apache2/ports.conf
被 被 certbot bot.
Bot 打不开 文该 被 被 被 Certbot 被 Écouter