1.経緯
先日作成した当サイトの管理者ページにログインしようとしたところ、
「保護されていない通信」と表示されたため、
「おいおい、ログイン情報が保護されていないのは不味いんじゃない?」と思って。
2.「Let’s Encrypt」のSSL証明書を発行
かといって、長続きするか分からないサイトのために有料の証明書を購入するのは、
ちょっと、いや、かなり躊躇われる。
なので、無料でどうにかならないかと調べてみると、、、
「Let’s Encrypt」なるものが使えるらしいじゃないですか!
しかもおあつらえ向きなことに、KUSANAGIならコマンドが用意されていて、
更新までやってくれて、ちょうど構築した環境もKU☆SA☆NA☆GI!!
これは使うしかないということでさっそく!
kusanagi ssl --email [EmailAddress] [Profile]
ところが、、、
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate ~省略~ Detail: Invalid response from http://xxxxxx.com/.well-known/acme-challenge/QEqWBDKJkUucWcuZGr942OUJxwxY5riqaU0iUFCEJns ~省略~ To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. Cannot get Let\'s Encrypt SSL Certificate files. 失敗しました。
なんじゃこりゃってことですよ。。。
3.解決
いろんなサイトを見まくって頑張りました。
どんなエラーかというと、
証明書発行時にDocumentRoot配下のディレクトリにファイルを配置して、
そのファイルが参照できるかな?って見てるらしいです。
で、私の場合は、証明書発行コマンドが判断したドメインがアクセス可能なドメインじゃなかった!!!
(「xxxxxx.com」じゃなくて「www.xxxxxx.com」だったのさ)
参照権限がどうのこうのとかあったので、かなり惑わされてしまいましたよ。。
まぁ、なんにせよ/etc/nginx/conf.dに移動して、
該当プロファイルのhttp.confにサーバーネームを追加。
※再起動をお忘れなく!(kusanagi nginx)
server_name www.xxxxxx.com; ↓ server_name xxxxxx.com www.xxxxxx.com;
あとは、証明書発行コマンドを再実行すれば...Congratulations!!!
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate ~省略~ IMPORTANT NOTES: Congratulations! Your certificate and chain have been saved at: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Your key file has been saved at: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Your cert will expire on yyyy-mm-dd. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew all of your certificates, run "certbot-auto renew" If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le 証明書の自動更新を有効にします nginx/httpd の設定を変更し、再起動しました。 完了しました。
4.最後の仕上げ
あとはhttpをhttpsにリダイレクトしてあげればOKなので、
/etc/nginx/conf.dに移動して、
該当プロファイルのhttp.confのコメントアウトを除去!
※再起動をお忘れなく!(kusanagi nginx)
# rewrite ^(.*)$ https://www.xxxxxx.com$uri permanent; # SSL ONLY ↓ rewrite ^(.*)$ https://www.xxxxxx.com$uri permanent; # SSL ONLY