CentOS6 + Apache2 を無料のSSL「Let’s Encrypt」でSSL化

以前に書いた記事の別OSバージョンで。

・CentOS7 + Apache2.4 を無料のSSL「Let’s Encrypt」でSSL化
https://developer-collaboration.com/2018/07/30/lets-encrypt-apache-centos/

記事を分けた理由としてはちょっと手順が違っているのとエラーが出ていた為です。

Centos6 系はまだ存続していると思うので以下に手順まとめて見ます。

まずは Certbot のインストールから。

インストール

Let’s Encryptで使うクライアントツールはACMEプロトコルに対応した Certbot というクライアントが必要です。
http://jxck.hatenablog.com/entry/letsencrypt-acme

 

そもそも取得の方法から CentOS7 系とは違っています。

以下ではEPELのリポジトリも導入していますが、設定済みの方は一番上の行は必要ありません。

 

さて、ここで以下のエラーが出てしまいました。

 

どうもCertbotでは python2.7 系が必要だが入っていないとのこと。

 

確認してみます。

確かに 2.6 ですね。

 

色々手順ありそうですが、「Software Collections(SCL)」というRed Hat が提供するアプリケーションのパッケージを利用してみます。

yumの旧パッケージと共存できるとのこと。

 

・Software Collections (SCL) を CentOS に入れてみた
https://qiita.com/murachi1208/items/202bff84964188619f57

 

この後にインストールした python2.7 を bash で利用できるようにします。

 

python のバージョンを確認します。

 

準備が完了したので再度のインストールを。

 

こちらで必要パッケージはインストールできました。

 

それでは証明書の作成を行います。

次のようにオプションを指定して certbot コマンドを実行します。

以下では「example.com」となっていますが、-d オプションには、証明書を発行するサーバーのドメインを入れてください。
-w オプションでは DocumentRoot のパスを指定します。

上記のように「Congratulations!」と出て入れば導入は完了です。

 

証明書関連のファイルを以下で確認してみます。

 

「サーバ証明書(公開鍵)」、「中間証明書」、「サーバ証明書と中間証明書が結合されたファイル」、「秘密鍵」の4つのファイルができます。

 

ApacheにSSLの設定は以下で実施できます。

尚、「サーバ証明書と中間証明書が結合されたファイル(fullchain.pem)」を設定すれば個別に中間証明書は必要ありません。

 

apacheを再起動します。

 

これで無事SSLのインストールが実施できました。

 

自動更新の設定

「Let’s Encrypt」では証明書は90日で切れてしまいます。

そこで、cron などで定期的なクライアントのインストールを実行します。

 

sclコマンドをシェルとは違う形で使い、インストールが終わった段階でhttpdのリスタートをしています。

上記のコマンドで証明書の有効期限が30日以内になると、再インストールを行います。

「–force-renewal」のオプションをつけていないので上記日数にならないとインストールは行いません。

毎日実行していますが、こちらは「Let’s Encrypt」に負荷をかけません。

尚、証明書の再インストールが行われると自動的にapacheの再起動を行います。

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-centos-7