無料でSSL証明書を取得できるLet’s Encryptのベータテストが始まったので、試してみました。
運良くベータテスターに選ばれると、Let’s Encryptからメールがきます。 そのメール中に書かれているコマンドとLet’s Encrypt公式ヘルプページを参考にすれば迷わないとは思いますが、一応手順をメモしておきます。
# 安全な場所に移動する。 cd /root # クライアントをgit経由でダウンロードする。 git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt/ # 一度実行する。 ./letsencrypt-auto # この環境では自動で証明書の設定ができない、と言われるので、手動で証明書をダウンロードする。 # 証明書のダウンロードに使うポートがWebサーバーのポートとかぶっているため、一度Webサーバーを停止する。 systemctl stop httpd # ダウンロードする ./letsencrypt-auto certonly -a standalone -d www.example.com --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview # 証明書は以下のパスに保存される。 # /etc/letsencrypt/live/www.example.com/ # Webサーバーを再開する systemctl start httpd
以上の手順で証明書がサーバー内にダウンロードされますが、まだWebサーバーの設定を行っていないため、httpsで接続することはできません。ということで、Webサーバーのほうをを設定していきます。
# mod_sslが必要になるのでyum経由で入れる。 yum install mod_ssl # 設定ファイルを編集する vi /etc/httpd/conf.d/ssl.conf
設定ファイルの内容のうち、以下の項目を設定します。
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
設定が完了したら、Webサーバーを再起動します。
systemctl restart httpd
firewalldを起動している場合は、httpsを許可する設定を追加します。
firewall-cmd --list-service --zone public firewall-cmd --add-service=https --zone public --permanent firewall-cmd --reload
さらに、VPSを利用している場合、VPS側の設定で443/TCPのポートを弾いていないか確認してください。
設定ファイルを適切に設定したのち、Webサーバーを再起動すれば、HTTPSでアクセスできます!
https://hikalium.com
しかし、VirtualHostを設定している場合は、証明書の対象でないドメインでhttpsでのアクセスを試みた場合に、ブラウザにとても怒られます。そんな場合は、VirtualHostディレクティブの中にSSLの設定を移してください。
以下のサイトを参考にするとよいでしょう。
ベータテストも終わり一般利用が始まったので、ACMEクライアントもyumから入れられるようになりました。(epelリポジトリより。)
yum install letsencrypt
更新手順は以下の公式ページマニュアルの通り、証明書取得と全く同じコマンドを入力すればOKです。(httpdの停止をお忘れなく。)
letsencrypt certonly -a standalone -d www.example.com