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などのスケジューラーによる、自動更新するスクリプトを準備したいと考えています。運用のノウハウがたまったら、記事を追加しますので、よろしければまたタイルテクノの技術ブログをご確認ください。