encryptは無料で使用できるSSLプラットフォームです。certbotコマンドを使って、簡単にSSL証明書の取得と更新ができます。あまりに簡単で手軽すぎるためか、ネット上ではやや問題のある手順が紹介されているケースが見られました。私なりにベストと思われる手順をまとめておきますので、改善点があれば教えてください。DNSの設定、Webサーバのセットアップ、certbotのインストールは完了しているとします。certbotのコマンド名はcertbot-autoで、$PATHが通っていると想定します。以下のような補助スクリプトを準備します。$DOMAIN証明書の取得テストは次のように行います。--test-cert本番用の証明書を取得するには次のようにします。--force-renewal新たなドメインに対する証明書が必要になるたび、このプロセスを繰り返してください。オプションを与えることで、テスト専用のサーバに接続します。ここで取得できる証明書は無効なものですが、certbotが正しく動作するか、ドメインの設定等が間違っていないか、まずこの段階で確認しておきましょう。webrootプラグインを使うcertbot自体をWebサーバとして機能させる、standaloneプラグインもありますが、利用するケースは限られるはずです。動作確認でも、実際の運用でも、webrootプラグインを使うほうが簡単でしょう。ファイルは、デフォルトでは以下のディレクトリに配置されます。証明書と中間証明書を連結したファイル設定方法はソフトウェア次第ですが、例としてApacheをとりあげます。バージョン2.4.7以前の場合、次のように設定します。ディレクティブでfullchain.pemを参照します。常に同じパスで最新版を参照できるこれらのファイルはすべてシンボリックリンクで、それぞれ最新版の実体ファイルにリンクされています。証明書を更新しても、ファイルパスを変更する必要はありません。以下に、番号付きのファイル名で保存されています。証明書と中間証明書の両方が含まれています。fullchain.pemSSLを利用するソフトウェアの中には、中間証明書を設定する項目がないものもあります。Dovecotなどなど。そのような場合には、このfullchain.pemを証明書ファイルとして指定します。以下のようなスクリプトを、cronで毎日〜週に1回程度の頻度で実行します1。オプションの引数は、使用しているOS/ソフトウェアに合わせて変更してください。実行すると、これまでに取得した全ての証明書の期限がチェックされ、30日以内に期限が切れるものを自動的に更新します。証明書の取得時に使用したオプションは/etc/letsencrypt/renewal/${DOMAIN}.confというファイルに保存されており、更新時にはこの設定が使用されます。変更が必要なら、このファイルを修正しましょう。オプションは、残り期限にかかわらず、強制的にすべての証明書を更新します。不要な負荷をかけることになるので、cronでの実行時には指定してはいけません。encryptの使用量制限に引っかかる可能性もあります。指定したコマンドは、証明書の更新が行われた場合にのみ、1度だけ実行されます。更新が行われなかった場合は実行されません。ここでWebサーバの再読み込み処理を実行すると良いでしょう。Instructiosによれば1日に2回が推奨。期限が近い証明書がなければ、特になにもしないので、さほど神経質になる必要はありません。upLoginユーザーは見つかりませんでした。