さくら 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 証明書の取得ができました。
引き続き、メ-ルユ-ザの追加を行ないます。


  • メ-ルユ-ザ追加 に進む
  • SSL 証明書の更新 に進む
  • DNS 逆引き SPF 設定 に戻る
  • さくら VPS メ-ル サ-バ作成準備 に戻る
  • 70VPS に戻る