Let’s Encryptを使えば、無料でSSL証明書を発行出来ます。
筆者は、CentOS6の環境でインストールしましたが、いくつか詰まった点がありましたので、本記事にまとめます。


下記の情報を参考に、Let’s Encryptをインストールしました。

Let’s Encrypt: How It Works
https://letsencrypt.org/howitworks/

GitHub: letsencrypt/letsencrypt
https://github.com/letsencrypt/letsencrypt

無料SSL証明書の Let’s Encrypt が公開されたので実際に試してみた
http://www.websec-room.com/2015/12/04/2380

Let’s Encrypt サーバー証明書の取得と自動更新設定メモ
https://blog.apar.jp/linux/3619/


ツールのインストールの際に実行した、コマンドの詳細は、下記の通りです。


# ミドルウェアのインストール
yum install httpd openssl
yum install mod_ssl
yum install git

# python2.7のインストール
yum install centos-release-SCL
yum install python27 python27-python-tools

# python2.7を有効にする(このコマンドは、ログインするたびに、毎回実行する必要があります)
scl enable python27 bash

# pipのインストール
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

# ツールのインストール
cd /your_script_dir
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help

ここから、Let’s Encryptのツールを使用して、証明書を作成する作業になります。
初回の実行時のみ、TOS(利用規約)に同意するかどうかのダイアログが表示されます。エンターキーを押して、同意してください。
コマンド実行時に、Let’s Encryptは証明書に記載するドメイン名の存在有無を確認しています。そのため、-dに記載するドメインは、あらかじめDNSに登録し、Webサーバで表示可能な状態にしてください。


# Webサーバの停止
/sbin/service httpd stop

# 証明書の作成
./letsencrypt-auto certonly --standalone --email your@email.com -d www.example.com

# 証明書が作成されたことを、確認する
ls -al /etc/letsencrypt/live/

# 証明書の内容を、確認する
openssl x509 -text -noout -in /etc/letsencrypt/live/www.example.com/cert.pem
openssl rsa -text -noout -in /etc/letsencrypt/live/www.example.com/privkey.pem
openssl x509 -text -noout -in /etc/letsencrypt/live/www.example.com/chain.pem

Webサーバの設定ファイルに、先ほど作成した、証明書の記述を追加し、SSLを有効化します。
例として、Apacheの場合、下記のような記述になります。適宜、読み替えて、修正してください。


vi /etc/httpd/conf/httpd.conf


NameVirtualHost *:443

  ServerName www.example.com
  DocumentRoot "/var/www/html/"

  SSLEngine on
  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サーバの再起動
/sbin/service httpd configtest
/sbin/service httpd start

ブラウザでWebサーバを表示し、証明書を確認します。また、下記のセキュリティチェックツールを使用し、証明書の状態を確認します。

GeoTrust CryptoReport SSL Checker
https://cryptoreport.geotrust.com/checker/views/certCheck.jsp

GlobalSign SSL Server Test
https://globalsign.ssllabs.com/


ここまでで、Let’s Encryptを使用した、SSL/TLSによる、セキュアな通信の環境を構築出来ました。なお今回の手順では、証明書を作成するコマンドを、手動で実行する必要があります。今後は、cronなどのスケジューラーによる、自動更新するスクリプトを準備したいと考えています。運用のノウハウがたまったら、記事を追加しますので、よろしければまたタイルテクノの技術ブログをご確認ください。