私は皆が見るためにいくつかのファイルをホストするApacheを持ち、HTTPSでそれを保護しました。 OpenVPNホストもあります。一部のネットワークは送信ポート(1194など)をブロックするため、OpenVPN内でport-share
機能を使用して、OpenVPNを介してApacheにHTTPトラフィックをルーティングします。これを行うことで、ポート443でサイトをホストしながら、(ほぼ)常に開いているポート443でVPNに同時に接続できます。
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を4443ではなくポート443で実行するように構成を変更し、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コマンドライン: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によって編集されているかどうかを確認します。
Certbotによって重複した「Listen」コマンドが追加されたため、私のWebサイトでSSLエラーが発生しました。
中文版:域名:maxattax.comの例。
完了:Apacheが独自のエンドポイント(443以外のエンドポイント)を使用している場合、certbotは成功しました。
状況:openvpn监听443の端口で、Apacheに443の端の口を分けて、Apache443 4443の端口の場合は、certbotの自動更新のドキュメントを報告します。
手順: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の修正を受けているかどうか。
私たちのウェブサイトは開かれていません。そのため、このドキュメントの面のために、certbotはリッスンコマンドを繰り返し追加しました。