Open8

AWS lightsailで素のubuntuにapache2を入れてhttps化したときに接続できないエラーの対処

Kazufumi SuzukiKazufumi Suzuki

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
Kazufumi SuzukiKazufumi Suzuki

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 "-" "-"
Kazufumi SuzukiKazufumi Suzuki

環境変数が読み込めていない

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
Kazufumi SuzukiKazufumi Suzuki

読み込んでいる設定ファイルを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
Kazufumi SuzukiKazufumi Suzuki

権限問題っぽいので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したところエラーは発生しなくなった。がまだ接続できない...

Kazufumi SuzukiKazufumi Suzuki

よく分かっていないこと

  • ログの: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>