kusanagi + let’s encryptのSSL証明書で、*.example.comみたいなサブドメイン(ワイルドカード)に対応してみた。
参考URL:
https://ichitaso.com/wordpress/wildcard-ssl-with-kusanagi-conoha/
1, 普通にSSL証明書取得は、kusanagiコマンド一発でOK!
1 |
kusanagi ssl --email 自分のメアド kusanagiのプロビジョン名 |
2, ワイルドカード付きはkusanagiコマンドでは無理っぽい。
let’s encryptのコマンドツールであるcertbotを使う。
1 2 3 4 5 6 |
/usr/local/certbot/certbot-auto certonly --manual \ --preferred-challenges dns-01 \ --server https://acme-v02.api.letsencrypt.org/directory \ -m admin@example.com \ -d *.example.com \ -d *.example.com |
3, 実行途中で、ドメインの所有権を確認するために、TXTレコードを作れ!と言われる。
DNSサーバにて、名前を_acme-challenge.自分のドメイン、値はコマンドラインに表示された乱数、TTLは300くらいにしておいた。
1 2 |
# txtレコードが反映されたか確認 dig -t txt _acme-challenge.自分のドメイン |
4, 問題がなければ、Congratulations!パチパチパチとlet’s encrypt側の設定は完了。
1 2 3 4 5 6 7 8 |
vi /etc/nginx/conf.d/[プロファイル名]_ssl.conf server { listen 443 ssl http2; server_name ichitaso.com; ssl_certificate /etc/letsencrypt/live/自分のドメイン名/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/自分のドメイン名/privkey.pem; |
5, 最期にnginxを再起動すれば、abcd.example.comでもSSL対応しているはず!
1 2 3 |
nginx -t nginx -s reload kusanagi restart |
6, なんかうまく行かないな~。そういう時は、rm -rf /etc/letsencrypt/* で一度証明書を削除すれば良いってどこかに書いてあったので実行したら、既存のWordPressが見れなくなった(泣)
うん、自分で消したもんな。
1 |
kusanagi71 nginx[3773]: nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/messiahworks.com/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/messiahworks.com/fullchain.pem','r') |
SSL証明書を再取得しようとしたら、HPにアクセスできないから無理!と言われる…。
1 |
kusanagi ssl --email 自分のメアド kusanagiのプロビジョン名 |
しょうがないから、一度SSL証明書の読み込みを中止してnginxを再起動。そしたら怪しいサイトと言われつつも、WordPressブログが表示されるようになった。
1 2 3 |
/etc/nginx/conf.d/kusanagiのプロビジョン名_ssl.conf # ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem # ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem; |
この状態なら、SSL証明書を再取得できたので、コメントインしてnginxを再起動。元に戻った~。
いやはや、よく分からないのにrm -rfとかするもんじゃないな。
ワイルドカード対応SSLのやり方も分かったし、終わり良ければ全て良し!
7, よく考えたら、kusanagiコマンドとは別にSSL証明書を取得しているので3ヶ月で、期限切れになる!
とりあえず、週イチで更新するようにcrontabしておこう
1 2 |
# *.example.comのようなサブドメインSSL証明書更新のために毎週日曜日の0時0分実行 0 0 * * 0 /usr/bin/certbot renew && nginx -s reload |