Let’s Encrypt + Apache でちゃんと証明書の生成が完了してるのに ‘*.pem’ does not exist or is empty というエラーが出る時のメモ

問題点

私の環境ではmod_sslのインストールでも一悶着ありましたけど、長くなるので割愛するとして、CentOS6.7 + Apache2.2.27の環境でLet’s Encryptのクライアントをインストールし、webrootで各証明書ファイルの生成も完了し、virtualhostでcert.pem、chain.pem、privkey.pemの場所指定も問題ないのに「apachectl configtest」を実行すると以下のエラーで怒られました。

$ apachectl configtest
Syntax error on line XX of /path/to/ssl.conf:
SSLCertificateFile: file '/path/to/cert.pem' does not exist or is empty

こういう時は相手が人間なら「はー?ふざけんなボケカス!空っぽなわけねーだろうが!!目ん玉かっぽじってよく見ろこのスットコドッコイが!!!」とか言えば収まるところに収まると思いますが、相手がコンピュータの場合は今の所人間が必死になって問題を特定するしかない。早く汎用AIが実現してほしい。

原因

まあ大抵パーミッションがあやしいんですよ。こういうのは。

とかいってすぐ分かったような感じで書いてますけど、設定ファイル見直したり、ググって原因ぽいものが見つからないか現時点で1時間くらい駆け回ってますので。はい。

で、とりあえずパーミッションを確認してみたら案の定「/etc/letsencrypt/archive/」と「/etc/letsencrypt/live/」のパーミッションが「744」になってました。

たぶんこれが原因だろうということでchmodでパーミッションを「755」に変更。

$ sudo chmod 755 /etc/letsencrypt/archive/
$ sudo chmod 755 /etc/letsencrypt/live/

この状態で「apachectl configtest」を実行すると…

$ apachectl configtest
Syntax OK

よかったね。

IT起業アカデミア