さくら VPS メ-ル サ-バ
SSL 証明書の取得準備
ここまでで、DNS SPF 設定が完了しました。
引き続き、SSL 証明書を取得していきます。
メ-ルサ-バでは SSL 認証が必須です。
さくら VPS メ-ル サ-バ作成準備
よりサ-バ名は mail.70vps.net でしたので、このホスト名の SSL 証明書が必要なことがわかります。
当初私は、70vps.net の SSL 証明書が使い回しができると思っていたのですが間違いでした。
新たに取り直す必要があります。
SSL 証明書の取得方法は
Web サイトを SSL 化する
を参考にしてください。
ただし、ポ-ト 80,443 が開いていないと SSL 証明書を取得できません。
パケットフィルタ設定
で、Web ポ-トが開いていることを確認してください。
ufw で Firewall(ファイアウォール)をかけているいる人は
ポ-ト 80,443 番があいているか確認してください。
$ sudo ufw status
として
非アクティブ
と表示された場合は ufw によるファイアウォールは起動していません。
cerbot コマンド書式は
$ sudo cerbot certonly --standalone -d ドメイン付きホスト名 --email 自分のメ-ルアドレス
standalone は web server でなくても証明書の取得設定ができます。
ただ、repository universe をインスト-ルしないと cerbot certonly コマンドは動きません。
「リポジトリ」というのは「ソフトウェア置場」
cerbot certonly コマンド
は universe にあるソフトウェアをインスト-ルしておかないと動作しないのです。
シリアルコンソ-ル(β版)を開き、
$ sudo add-apt-repository universe
$ sudo apt update
$ sudo apt -y install letsencrypt
SSL 証明書の取得
$ sudo certbot certonly --standalone -d mail.70vps.net --email ******@yahoo.co.jp
を実行し証明書を取得します。
******@yahoo.co.jp は普段私が使っているメ-ルアドレスです。
途中質問をされますので答えていきます。
もし
Problem binding to port 80: Could not bind to IPv4 or IPv6.
のエラ-が出たら
証明書を取得するときに、80番ポートを利用するのに apache 等の WEB サーバーがすでに起動していて、
80番ポートが利用されていることが原因です。
一旦 WEB サーバーを停止させましょう。
私の場合 Ubuntu での Apache2(WEBサーバ)が動いていますので
$ sudo service apache2 stop
で WEB サーバーを停止します。
SSL 証明書が取得できたら再起動します。
$ sudo service apache2 restart
シリアルコンソ-ル(β版)を開き、以下のように作業を進めます。
yamada@ik*-***-*****:~$ sudo service apache2 stop
[sudo] yamada のパスワード:
yamada@ik*-***-*****:~$
sudo certbot certonly
--standalone
-d mail.70vps.net
--email ******@yahoo.co.jp
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mail.70vps.net
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mail.70vps.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mail.70vps.net/privkey.pem
Your cert will expire on 2020-11-19. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot 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
yamada@ik*-***-*****:~$ sudo service apache2 restart
証明書は
/etc/letsencrypt/live/mail.70vps.net/
LREADME
Lcert.pem
Lfullchain.pem ●証明書
Lprivkey.pem ●保証秘密鍵
に配置されました。
SSL 証明書の更新
Let's Encrypt の証明書有効期限は3ヶ月なので、期限が来るまでに更新が必要です。
期限切れ1月前になったら、
$ sudo certbot renew
--cert-name mail.70vps.net
--pre-hook 'service apache2 stop'
--post-hook 'service apache2 restart'
として更新します。
うまく行くのですが、でもちょっと不満が残ります。
三カ月ごとに証明書の更新が必要です。
これを何とかしましょう。
SSL 証明書の取得その2
Let's Encrypt のコマンドリファレンスを探していたら
Let's Encrypt 総合ポータルコマンド解説
を見つけました。
ここを読むと、もし SSL を取得するとき
$ sudo certbot certonly --standalone -d mail.70vps.net --email ******@yahoo.co.jp --pre-hook 'service apache2 stop' --post-hook 'service apache2 restart'
として SSL 証明書 を取得していたのであれば、更新は自動で行われるはずです。
取得動作に
--pre-hook
--post-hook
を使って WEB サ-バのオン・オフを自動で行っているからです。
そして更新の時もこの動作を行ってくれるのです。
私は手動で、apache2 サーバーを停止をして SSL を取得してから apache2 を再起動しているので、
再証明書取得時のサーバーオンオフを動作が手動になってしまいました。
--hook で取得前後の動作が設定できたのでした。
気づくのが遅かった。
残念。でも、
--force-renewal
なるオプションがあることに気づきました。
リクエストされたドメイン名の SSL/TLS サーバ証明書が既に存在する場合には、
残りの有効期間にかかわらず、証明書を更新してくれるものです。
$ sudo certbot certonly --force-renewal --standalone -d mail.70vps.net --email ********@yahoo.co.jp --pre-hook 'service apache2 stop' --post-hook 'service apache2 restart systemctl restart postfix dovecot'
systemctl restart postfix dovecot
を忘れずに、postfix と dovecot は再起動する必要があります。
私はこれを忘れて三ヶ月後 SSL が更新されているにも関わらず、
クライアントメ-ラに更新されたSSL証明書が届かないトラブルに見舞われました。
実行してみると下記のようにうまく動作してくれました。
yamada@ik*-***-*****:~$
sudo certbot certonly
--force-renewal --standalone
-d mail.70vps.net
--email ********@yahoo.co.jp
--pre-hook 'service apache2 stop'
--post-hook 'service apache2 restart systemctl restart postfix dovecot'
[sudo] yamada のパスワード:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Running pre-hook command: service apache2 stop
Renewing an existing certificate
Running post-hook command: service apache2 restart systemctl restart postfix dovecot
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mail.70vps.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mail.70vps.net/privkey.pem
Your cert will expire on 2020-11-20. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot 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
更新がうまくいくか確認します。
$ sudo certbot renew --dry-run --cert-name mail.70vps.net
を確認するとエラ-の発生はありませんでした。
これで3カ月たてば自動更新してくれるはずです。
と思っていたのですが自動更新してくれません。
2021/9/12日
SSL 証明書の更新
を追加しました。
これもお読みください。
ここまでで SSL 証明書の取得ができました。
引き続き、メ-ルユ-ザの追加を行ないます。