無料でSSL証明書を取得する
SSL証明書を取得して運用する為には今まで、ベリサインやGEOなどの認証局へ有料で審査してもらって証明書を発行してもらっていた。
しかし、2015/12に無料で使用できるLet's Encryptというサービスが公式に始まった。
これを使用して無料でSSL証明書を取得してみる。
Let's Encrypt
https://letsencrypt.org/
準備
gitが必要となるのでインストールします。
# yum install git
インストール
# cd /usr/local/src/
# git clone https://github.com/letsencrypt/letsencrypt
# cd /usr/local/src/letsencrypt/
# ./letsencrypt-auto --help --debug
上記で必要な物がインストールされます。
yum でインストールされる python 2.6 ではエラーが発生するので –debug オプションをつけて実行します。
helpが表示されれば成功です。
証明書の発行
サーバの80ポートを使用して証明書を発行する方法(--standalone)
この方法は80番ポートを使用していない状態にしないといけないため、既に起きているwebサーバなどを停止する必要がある。
# ./letsencrypt-auto certonly --standalone --debug -d ドメイン名
ドキュメントルートに認証用ファイルを作成して証明書を発行する方法(--webroot)
この方法はドキュメントルートに認証用のファイルを作成して証明書を発行するので
既に起動しているWEBサーバを停止する必要がない。
# ./letsencrypt-auto certonly --webroot --debug -w ドキュメントルート -d ドメイン名
ここでは上記のサーバを停止する事なく発行できる方法を取り上げる。
だが、手順的にはどちらも同じはず。
コマンド実行後下記手順
上記が終了すると
/etc/letsencrypt/live/ドメイン名/
に鍵が作成されています。
WEBサーバの設定
先ほど作成されたキーをWEBサーバに読み込ませます。
下記apache例
下記を追加、または変更します。
SSLCertificateFile /etc/letsencrypt/live/ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem
# /etc/init.d/httpd restart
httpsでの接続がきちんと認証された状態で接続できるようになっているはずです。
鍵の自動更新について
鍵の有効期間は90日間と大変短いです。自動で更新できるようにしておきましょう。
letsencrypt-auto renew
上記で使用している全ドメインに対して期限が近づいてきたら更新されるらしいのですが、ちょっと曖昧で不安なので
--force-renew
オプションを付け、強制的に更新させるコマンドでcronに登録しておきましょう。
毎月1日の朝9時に自動更新
0 9 1 * * /usr/local/src/letsencrypt/letsencrypt-auto renew --force-renew --debug 2>&1 > /dev/null
以上。