Encrypt)を導入しようCentOS7Let'sEncryptVPSツイートWebサーバーで、暗号化通信(HTTPS)は必須になってきました。EncryptのTLS/SSL証明書を使用します。Webコンテンツを暗号化で保護するHTTPSプロトコルにはTLS/SSL証明書が必要ですが、数年前までは発行料の高安はともかく有料で発行されるものだったので、多くのWebサイトはHTTP(非暗号)が当然でした。ショッピングや銀行など保護すべきデータがあるときは当然HTTPSですが、会員サイトであってもHTTPの場合がありました。Encryptは、2016年より公式の認証局として活動しています。Encryptが発行するTLS/SSL証明書では、企業実在性の証明や運用組織名の表示が出来ないので、単に情報保護や改竄防止などができれば十分というサイトに向いています。TLS証明書の発行に当たって、事前に発行したいドメイン名やサブドメイン名がDNSへ登録されている必要があります。ここでは、当面次のドメインが必要となるのでその手順を記載します。ドメイン名は、"hiroski.com"をそれぞれに読み替えてください。EncryptのTLS証明書の取得を行うパッケージをインストールします。python2-certbot-apachecertbotの詳細については本家を参照してください。選択すると実行に必要なコマンドを例示します。有効にせよとありますが、さくらのVPSでは最初から有効になっていました。次に証明書の取得を実行といきたいところですが、certbotは、Apacheの定義ファイルを読み込み証明書が必要なドメインの検出と、必要な変更を行ってくれます。前記事01-exsample.com.confは重なります)。</Directory></VirtualHost>定義ファイルを準備したら、httpdは再起動しておきます。httpdcertbotは、Apacheの定義ファイルを検索し、443ポートを見つけたら必要なディレクティブを定義ファイルへ追加し、Apacheを再起動してくれます。複数ドメイン(サブではなく)を運用しているときの、このコマンドの動作は確認していません。--apacheHTTPSを適用するドメインや、HTTPでアクセスがあったときにHTTPSへリダイレクトするか聞かれます。ドメインはそのままEnterで問題ありません。https://eff.org/donate-le何度かcertbotを試していたので上記には表示されていませんが、初回certbot実行時には次を表示します。していたので多少異なるかもしれません)メールアドレスの登録、サービス規約に同意するか、メールアドレスをEFF等で共有してよいか、が聞かれます。N証明書が発行されているか確認します。-各定義ファイルには次が追加されました。[END,NE,R=permanent]</VirtualHost>httpからhttpsへリダイレクトが追加。httpが必要な場合はコメントアウトします。IPアドレスでアクセスしたときにhttps://ドメイン/へリダイレクトするときは定義ファイル(ここでは、00-default.conf)へ同様の追加をします。Encryptでの推奨設定のようです。ディレクティブは、サーバー主導での暗号選択なのでonでよいと思います。この推奨設定を使用すると、古いいくつかのデバイスが接続出来なくなるようです。次のデバイスは接続できません。古いTLSv1のみのデバイスは接続できません。TLSv1.2対応の暗号スイートを列記すると上記デバイスをクリアできますが、暗号スイートのいくつかはよろしくないようで、RatingはBになりました。1.0.2kで、TLSv1.3をサポートしていません。HTTPSの動作を確認しますがTLS証明書のセットアップが完了したので、さっそくHTTPSでアクセスします。証明書に問題があるようです。原因は、"/etc/httpd/conf.d/ssl.conf"がApacheインストール状態のままで、https://hiroski.com/のときに、Apacheインストール時に組み込まれたローカルな証明書を読み込んでいたからでした。ディレクティブ内を削除し、httpdを再起動します。httpd再度、https://hiroski.com/をアクセスして問題ないことを確認します。ディレクティブ内を削除したので、いくつかのディレクティブの設定も削除となりました。ディレクティブ内下端に追加します(MSIEの記述はもう古すぎるように思いますが、実際どうなるのでしょうか)。nameが一致しないので接続に問題がある旨表示されてしまいます。通常訪問者はこれ以上進みませんが、そのまま進むと443ポートをデフォルト定義したサイトをIPアドレスで表示されます。ここはデフォルトのServerNameで表示されてさせたいので、HTTPと同様に追加します。[END,NE,R=permanent]以上で、Apacheで定義したサイトに必要な証明書を取得できましたが、メール(postfix/dovecot)で使用するmail.hiroski.comの証明書は取得できていません。メール用の証明書を追加しようつづいて、取得した証明書にmail.hiroski.comを追加します。mail.hiroski.comはApacheで定義していないので、certbotをstandaloneモードで内蔵ウェブサーバーで動作させます。certonlyで実行します。mailサブドメインはWebサーバーの定義に存在しないので、Apacheの定義ファイルへ予期せぬの変更があると混乱がおきます。--expandで証明書を拡張するとき、既取得を含め全てを列挙します。https://eff.org/donate-le最終的に取得した証明書のドメインです。/etc/letsencrypt/live/hiroski.com/privkey.pem証明書の自動更新を設定しようTLS証明書を取りっぱなしでは、90日の有効期限を過ぎて失効してしまいます。certbotコマンドをcronで定期的に実行すれば、失効の30日前に更新できます。以下では、毎日3時に自動更新を実行します。--pre-hook、--post-hookはcertbot実行前後のコマンド指定です。httpd"証明書の無効化についてなんらかの都合で、OSを再インストールするなど証明書が消えてしまうときには、事前に証明書を無効化します。無効化せずに取り直しを繰り返すと回数制限にかかるようです。fieldsは、サイト上であれこれ試したことをログしていきます。