Let’s Encryptを使ってサーバーをhttps対応しましたが、ほとんどがCentOS7向けの解説で、CentOS6向けの解説が少なかったので備忘録も兼ねて作業内容をお話します。
まずはLet’s Encryptをインストールする前処理になります。
mod_sslをインストールします。
# yum install mod_ssl # /etc/init.d/httpd restart # httpd -M | grep ssl
ssl_modulleがインストールできたことを確認できればOKです。
https用の対応したポートを解放します。
# vi /etc/sysconfig/iptables ----------------------------------------------------- -A INPUT -p tcp --dport 443 -j ACCEPT ----------------------------------------------------- # /etc/init.d/iptables restart
スキーム名をhttp → https と置き換えてサーバーにアクセスできればOKです。
今はまだ証明書をインストールしていないので、ブラウザによっては警告が出ますが気にしないで次の手順に移ってください。
Let’s Encryptを使用するにはPython2.7が必要なのでインストールします。
# yum install centos-release-scl-rh # yum install python27 # vi /etc/profile.d/python27.sh ----------------------------------------------------- #!/bin/bash source /opt/rh/python27/enable export X_SCLS="`scl enable python27 'echo $X_SCLS'`" ----------------------------------------------------- # python --version
Python2.7がインストールされていればOKです。
Python以外にもパッケージのインストール及び更新が必要ですが、こちらはyumでインストールできます。
# yum update nss # yum install gcc openssl-devel bzip2-devel # yum update ca-certificates
pipもインストールしておきます。
# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" # python2.7 get-pip.py
ここまでがインストールの準備で、ここからが本番です。
Certbotをインストールします。
# wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto
Let’s Encrypyで証明書を取得します。
# ./certbot-auto certonly --webroot -w [ドキュメントルートのパス] -d [ドメイン名] --email [メールアドレス] --no-bootstrap
ここで入力したメールアドレスに証明書を有効化するための確認メールが届きますので、対応してください。
取得した証明書を使用するようApacheの設定を変更します。
# vi /etc/httpd/conf.d/ssl.conf ------------------------------------------------------------- SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem ------------------------------------------------------------- # vi /etc/httpd/conf.d/vhost.conf ------------------------------------------------------------- NameVirtualHost *:443 <Virtualhost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem ------------------------------------------------------------- # /etc/init.d/httpd restart
これでサーバーにhttps対応は完了です。
https経由でサーバーにアクセスしても、証明書の警告が出なくなっているはずです。
ここからは後処理です。
他のサイトからリンクが張られている場合など、httpでのリンクが残っているため、http経由のアクセスをhttps経由のアクセスにリダイレクトします。
# vi /etc/httpd/conf.d/vhost.conf ------------------------------------------------------------- <Virtualhost *:80> ServerName test.net RewriteEngine on RewriteCond %{HTTP_HOST} ^test\.net RewriteRule ^/(.*)$ https://test.net/$1 [R=301,L] </Virtualhost> ------------------------------------------------------------- # /etc/init.d/httpd restart
また、Let’s Encryptの証明書は有効期限が3ヶ月なので、自動で更新するよう設定します。
# crontab -e -------------------------------------------------------------- 0 3 * * * root certbot-auto renew --------------------------------------------------------------
以上でhttps対応は完了です。
参考にしたサイト
ネコでもわかる!さくらのVPS講座 様
Nedia BLOG 様
Mobiletest 様