CentOS6にLet’s Encryptを導入してみる

Let’s Encryptを導入してみる(CentOS6編)
お疲れ様です。
技術部の向坂です。
今回はCentOS6のapacheにSSL証明書を適用するまでをご紹介します。
それよく聞くけど何?と思った方へ
すごく簡単にまとめると、
サイトの通信を暗号化することで第三者による盗聴・改ざんを防ぐ。
セキュリティを高めるものと思ってください。
なぜ書こうかと思ったかというとググってそのまま進めると
エラーがでてしまいますので、少しでも気軽に進めるように、、、と
思い今回作成しました。
なので最低限の説明しか書きませんが、お許しください。。。
では早速ご紹介していきます。
※ドメイン名を取得していないとLet’s Encryptを使用できません。
あらかじめ取得しているのが前提となります。
現在の状況はCentOS6をインストールしてyum updeteを実行した状態です。(CentOS6.10)
1. まずはapacheをインストール
# yum install -y http
2. apacheの起動、自動起動の設定
# /etc/init.d/httpd start
# chkconfig httpd on
3. apacheのバージョンを確認
2019/03/28時点では上記インストール方法だと”Server version: Apache/2.2.15″
# httpd -v
4. SSLを適用するためのテストなのでファイヤーウォールを停止します。
# service iptables stop
ここからようやくLet’s Encryptを使用するための準備になります。
まずクライアントツールはA Certbot というクライアントが必要です。
だけどそのままCertbot をインストールするとエラーがでます。
原因はCertbotでは python2.7 系が必要なのですが、CentOS6は上記手順で
updateをした場合だとpython2.6系なためです。
5. python2.7 系をインストールします。
# yum install -y centos-release-SCLcrlf
# yum install scl-utils python27 python27-python-tools;crlf
# scl enable python27 bash
6. certbot-autoを取得をします。
# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto //←certbot-autoを取得
# chmod 700 /usr/bin/certbot-auto //←権限を変更
# certbot-auto --version //色々インストールを求められるのでインストールします。
この時点で一度ブラウザからアクセスしてみます。
使用しているIPをURL欄に打ち込んでアクセスしてみましょう。
apacheの初期ページが表示されます。
7. apacheが動いているのを確認したら、簡単なテストページを作ります。
# vi /var/www/html/index.html //←index.htmlのファイルを作ります。
中身はブラウザからアクセスした時に表示されるページのコードを打ち込みます。
テストなのでなんでも問題ありません。
<html>
<head><title>テストページ</title></head>
<body>
<p>testページ。</p>
</body >
</html>
もう一度ブラウザからIPでアクセスしてみましょう。
さっき作成したindex.htmlの中身が表示されています。
やっと準備ができました。。。
今回はこのindex.htmlのページにSSL証明書を適用してみます。
8. 証明書を発行します。
※ -w の先はファイルのパス
※ -d の先はドメイン名
# certbot-auto certonly --webroot -w /var/www/html -d xxxxxxx.com --email "メールアドレス"
最終的に表示されるメッセージのIMPORTANT NOTES:の下に- Congratulations!と表示されていたら発行できています
発行されると、/etc/letsencrypt/live/”ドメイン名”というディレクトリが
自動で生成されています。
ドメイン名のディレクトリの中には以下5つのファイルがあります。
README cert.pem chain.pem fullchain.pem privkey.pem
これが証明書の鍵なのでApacheが読み込めるようにします。
9. apacheのSSL設定ファイルを編集します
# vi /etc/httpd/conf.d/ssl.conf //apacheのSSL設定ファイル開いたら、
# :set number //を打ち込みましょう。viエディターに行番号を表示させるコマンドです
以下に記述されている行の行頭に#をつけてコメントアウトしてください。
(行番号は前後しているかもしれません)
105 #SSLCertificateFile /etc/pki/tls/certs/localhost.crt
112 #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
121 #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
10. その後に、chain.pem fullchain.pem privkey.pemのファイルを適用させます。
(先ほどコメントアウトした次の行にそれぞれを入れるとわかりやすいかと。)
SSLCertificateFile /etc/letsencrypt/live/xxxxxxx.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxxxxxx.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/xxxxxxx.com/chain.pem
これで証明書の設置が完了しました。保存してviエディターを閉じます。
11. apache再起動をして証明書を読み込ませます。
# service httpd restart
以上でLet’s Encryptの適用が完了しました。
試しにhttps://xxxxxxx.comにブラウザからアクセスしてみてください
左の鍵の部分を見るとこの接続は保護されていますと表示されています。

以上ご紹介した方法を応用して各環境に合わせていただけたらと思います。
それでは本日もお疲れ様でした。