[Server] letsencryptを使ってhttps化しました

お世話になっております。
しゃまとんです。

少し前から気になっていたホームページのHTTPS化ですが、なんとなくやる気持ちになったので対応してみました。

HTTPSにするにあたって証明書が必要になるのですが、以前はオレオレ証明書だったりどこかの発行所で購入する必要があったのですが、letsencryptというサービスが開始されたことで誰でも無料でHTTPS化を正式に行えるようになりました。

ちなみに2018年からワイルドカードにも対応するそうです!!

ということでletsencryptを使って、HTTPS化した手順をまとめておきます。
今回はCentOS6でapacheを利用しているWebサイトに対しての例になります。

まず、letsencryptを利用するにはpython2.7が必要なので、インストールします。
rootにて作業しています。

すんなりいけばバージョンが更新されますが、自分の場合はエラーが表示されてしまったので、下記のサイトを参考に対処しました。ちなみにエラーはこれ。

次にletsencryptを設定していきます。今回は証明書の発行だけを行います。
実行すると色々聞かれるの答えます。その後、確認が行われ成功すると証明書が作成されます。

無事、証明書が発行されました!
続いて、apacheの設定を行います。/etc/httpd/conf.d/ssl.confを開き、各項目を設定しておきます。

iptablesが有効になっている場合、HTTPSをポートを解放しましょう。
追加コマンドか、ファイルを直接編集します。(/etc/sysconfig/iptables)
内容は使っているサーバによって読み替えてください。

apacheとiptablesを再起動しておきます。

ここでHTTPSでアクセスできるか確認しておきます。
一通りアクセスしてみて問題なさそうだったら、httpをhttpsにリダイレクトするようにしておきます。
/etc/httpd/conf.dに新しくconfファイルを追加します。

わざとhttpでアクセスしてhttpsにリダイレクトすることを確認します。
以上でhttps化は完了です。

最後にcronで証明書を定期更新するようにしておきます。letsencryptの証明書は3ヶ月ほどで切れてしまうようなので、cron等で設定しておくとよいです。
更新されたかわかるようにメールアドレスを添えておきました。

ちなみに、renewに成功するとこんな感じです。

あとで気づいたのですが、画像等がhttpのURLで参照していると「保護された通信」と表示されなくなってしまうようです。この辺は一括設定かなにか対応が必要ですね。

以上です。

■ 参考
Linux(CentOS)にPython 2.7.11をインストール
apacheでhttpへのアクセスをhttpsへ自動リダイレクトする
Apache httpd 2.2 に HTTPS (SSL/TLS) の設定をする (CentOS 6)
Let’s Encryptで証明書を発行してWordPressをSSL化する