Open8
AWS lightsailで素のubuntuにapache2を入れてhttps化したときに接続できないエラーの対処
lightsail(Ubuntu 20.04 LTS)でApache/2.4.41
をインストールしてSSL化しようとしたけど接続できないので調査ログを残す。
現状DNSの登録はできて、curl bashcms2.kz23szk.dev
でデフォルトページのhtmlは返ってきている。
sudo letsencrypt --apache
で鍵や設定ファイルは配備できているはず。
https接続を確認しようとすると、下記のようになる。
curl https://bashcms2.kz23szk.dev
curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number
apcheのログ見ると80ポートに接続にしにいっている?
sudo tail -n 1 /var/log/apache2/other_vhosts_access.log
ec2-xxx-xxx-xxx-xxx.hoge-region-n.compute.amazonaws.com:80 217.178.82.77 - - [16/Jan/2022:02:19:38 +0000] "\x16\x03\x01" 400 392 "-" "-"
環境変数が読み込めていない
apache2 -V
Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
source /etc/apache2/envvars
で読み込み直したら上記のエラーは出なくなった。
sudo service apache2 restart
で再起動したが変わらず。
curl https://localhost
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
読み込んでいる設定ファイルをapache2 -t -D DUMP_INCLUDES
で確認すると、最後の方にファイルがないと怒られる。
AH00526: Syntax error on line 33 of /etc/apache2/sites-enabled/bashcms2-le-ssl.conf:
SSLCertificateFile: file '/etc/letsencrypt/live/bashcms2.kz23szk.dev/fullchain.pem' does not exist or is empty
ファイルは存在する。
sudo ls -l /etc/letsencrypt/live/bashcms2.kz23szk.dev/fullchain.pem
lrwxrwxrwx 1 root root 49 Jan 15 06:57 /etc/letsencrypt/live/bashcms2.kz23szk.dev/fullchain.pem -> ../../archive/bashcms2.kz23szk.dev/fullchain1.pem
権限問題っぽいので755に変更してみる。
ubuntu@bashcms2:/etc/apache2$ sudo ls -l /etc/letsencrypt/ | grep -E "live|archive"
drwx------ 3 root root 4096 Jan 15 06:57 archive
drwx------ 3 root root 4096 Jan 15 06:57 live
ubuntu@bashcms2:/etc/apache2$ sudo chmod 755 /etc/letsencrypt/archive/
ubuntu@bashcms2:/etc/apache2$ sudo chmod 755 /etc/letsencrypt/live/
ubuntu@bashcms2:/etc/apache2$ sudo ls -l /etc/letsencrypt/ | grep -E "live|archive"
drwxr-xr-x 3 root root 4096 Jan 15 06:57 archive
drwxr-xr-x 3 root root 4096 Jan 15 06:57 live
apache2 -t -D DUMP_INCLUDES
したところエラーは発生しなくなった。がまだ接続できない...
http://mumumuorg.blogspot.com/2012/08/rapidssl.htmlを参考にして、VirtualHost部分をワイルドカードにして再起動(sudo service apache2 restart
)したところ接続できるようになった!
sudo head -n 2 sites-enabled/bashcms2-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ついでにhttpをhttpsにリダイレクトするのは下記を参考にした。
よく分かっていないこと
- ログの
:80
の部分(ポート番号でない?)
ec2-xxx-xxx-xxx-xxx.hoge-region-1.compute.amazonaws.com:80 217.178.82.77 - - [16/Jan/2022:03:15:09 +0000] "HEAD / HTTP/1.1" 200 239 "-" "curl/7.77.0"
- VirtualHostの設定はドメイン直指定でなくワイルドカードで通るのはなぜ?
head sites-available/bashcms2-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
#<VirtualHost bashcms2.kz23szk.dev:443>