Let’s Encriptで無料のSSL証明書を取得する
証明書の作成(検証)
まずは証明書を作成するためのスクリプトを作成する
普通にコマンドで実行しても良いのだが、スクリプトを作成しておけば証明書のパスやドメインなどを後々確認したくなった時に役立つ
vi certbot_init.sh
certbot certonly --dry-run --webroot -w /var/www/html/ -d xxxxxx.com -d mail.xxxxxx.com -m ramenoisiiyoneee@xxxxxx.com --agree-tos --dry-run
-wにはドキュメントルートを指定
-dにはドメインを指定
xxxxxx.comはwebサーバー、mail.xxxxxx.comはメールサーバー用のドメイン
-mはメールアドレスを指定
まずは検証したいのでオプションの–dry-runをつけておいて検証が成功するか確認する
sh certbot_init.sh certbot_init.sh: 行 1: certbot: コマンドが見つかりません
certbotコマンドがないと怒られました
最初から入ってないらしい…
certbotをインストールする
dnf install certbot
再度スクリプトを実行する
sh certbot_init.sh IMPORTANT NOTES: - The dry run was successful.
The dry run was successful と出れば検証成功
証明書の作成(本番)
スクリプトの–dry-runを外し、実際に証明書を取得する
vi certbot_init.sh
certbot certonly --webroot -w /var/www/html/ -d xxxxxx.com -d mail.xxxxxx.com -m ramenoisiiyoneee@xxxxxx.com --agree-tos --dry-run
sh certbot_init.sh - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:
なんか選択肢が出てきたので翻訳サイトに突っ込んでみたところ、証明書が発行出来たらあなたのメールアドレスにLet’s Encriptのニュースとか情報送ったりしていいですか?みたいな内容だった
嫌なので N を入力
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/xxxxxxx.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/xxxxxxx.com/privkey.pem
congratulationと出ており、pemも発行されているので成功しているようだ
dryrunの時のようにsuccessと出ないのでわかりづらい。。。
証明書の定期自動更新
証明書は3か月に1度切れるのでcronで自動更新を実施する
dryrunでまずは検証する
証明書更新後、webは無停止にしたいのでh2oはrestartではなくreloadする
certbot renew --dry-run --post-hook "systemctl reload h2o"
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/xxxxxx.com/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
上記のようにCongratulationと画面が表示されていればOK
(ちなみにエラーがあると赤文字で記載がある)
検証が成功したらcronにスクリプトを登録する
3か月に1回切れるのだから、cron.monthlyに登録したいところだが、もし証明書更新がうまくいかなかったときに通知されるアラートの回数が少ないので、念のためcron.weeklyに登録する
vi /etc/cron.weekly/certbot
certbot renew --post-hook "systemctl reload h2o"
今はまだメールサーバーを構築していないので上記で良いが、メールサーバー構築後はそちらのサービスも再起動が必要になるので以下のように変更する予定(postfixとdovecotを使用する場合)
certbot renew --post-hook "systemctl reload h2o; systemctl restart postfix; systemctl restart dovecot"
コメント