無料SSL証明書「Let’s Encrypt」をAmazon EC2で使用する
無料で利用できるSSL証明書のLet's Encrypt
が気になっていたので、試してみることにしました。このブログで導入してみましたが、カンタンにURLがHTTPS
に切り替わりましたのでその手順を書いておきます。所要時間は約15分です。
GoogleもHTTPSの方が好みのようで、SEOに直接関係があるとは言っていませんが、悪い影響は考えられません。1年くらい前になりますが、こんな発表もありました。
『グーグル、HTTPSページを優先的にインデックスすることを発表、既存HTTPに影響なし』
http://www.sem-r.com/google-2010/20151219103538.html
これを見て、「SSL証明書」導入して、このブログもHTTPS通信にしないとダメだなぁと思っていましたが、内容をよく見てみると
URLの両方のバージョンを発見した場合は、後者を優先的にインデックスしていく
というだけで、直接的なSEOへの影響は無いようです。それでも、やはりSSL証明書を取得したいとずっと思っていました。今日、その時がやってきたのです。
[今回の作業環境]
・Amazon Linux(CentOS6と近い構成)
・Apache 2.4
・対象ドメイン:sample.com (以下はこのドメインで作業)
※ドメインは各自適宜変更して使用
1.certbot
のインストール
/home/ec2-user
にてcertbot
をgit
でインストールする。
$ git clone https://github.com/certbot/certbot
Cloning into 'certbot'...
remote: Counting objects: 40932, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 40932 (delta 15), reused 4 (delta 4), pack-reused 40887
Receiving objects: 100% (40932/40932), 11.28 MiB | 10.57 MiB/s, done.
Resolving deltas: 100% (29140/29140), done.
Checking connectivity... done.
2.コマンドで設定ファイルの作成
ディレクトリを移動して、コマンドを実行する。
$ cd certbot/
$ ./certbot-auto certonly --standalone -d sample.com
WARNING: Amazon Linux support is very experimental at present...
if you would like to work on improving it, please ensure you have backups
and then run this script again with the --debug flag!
Amazon Linuxでは、--debug
オプションが必要となるそうです。
$ ./certbot-auto --debug certonly --standalone -d sample.com
Bootstrapping dependencies via Amazon Linux...
yum is /usr/bin/yum
...
...
...
Complete!
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Requesting root privileges to run certbot...
/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt --debug certonly --standalone -d sample.com
Version: 1.1-20080819
Version: 1.1-20080819
メールアドレスinfo@sample.comを入力して「OK」
規約への同意「agree」
Apacheを停止させる必要があるとのこと。。「OK」
...
...
MisconfigurationError: At least one of the (possibly) required ports is already taken.
IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
e-mails sent to info@sample.com.
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
うまくできなかったので、起動中のwebサーバを停止して再度実施する。
$ sudo /etc/init.d/httpd stop
Stopping httpd: [ OK ]
$ ./certbot-auto --debug certonly --standalone -d sample.com
Requesting root privileges to run certbot...
/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt --debug certonly --standalone -d sample.com
Version: 1.1-20080819
Version: 1.1-20080819
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/sample.com/fullchain.pem. Your cert will
expire on 2017-01-03. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
これで、証明書が生成される。次にapacheの設定が必要。
追記:2017/01/10時点では、apacheの再起動は必要なかった。
追記:2018/02/20 --standalone
:このオプションはそもそもWebサーバ(Apache や nginx など)が動作していない環境において、 必要なオプションでした。
3.mod_sslのインストール
SSLを使用するために必要なmod_ssl
のインストールです。(インストール済の場合は不要)
$ sudo yum install mod24_ssl
4.iptablesの修正
HTTPS通信で使用するport番号:443を開放するためiptablesの修正をします。
/etc/sysconfig/iptables
...
...
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
...
...
iptables修正後は、iptableの再起動が必要です。
$ sudo /etc/init.d/iptables restart
5.apacheの設定
設定ファイルの追加をします。
/etc/httpd/conf.d/ssl.conf
以下の2点は自分の環境に置き換えて、適宜変更。
ドキュメントルート:/var/www/html/sample.com
ドメイン:sample.com
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/sample.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sample.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/sample.com/chain.pem
<Directory "/var/www/html/sample.com/">
AllowOverride All
</Directory>
ServerAdmin root@sample.com
DocumentRoot /var/www/html/sample.com
ServerName sample.com
</VirtualHost>
Webサーバの再起動です。
$ sudo /etc/init.d/httpd restart
追記2017.01.12)/etc/httpd/conf/httpd.confは修正不要。
6.HTTPSで表示
これでhttpsにアクセスできるようになりました。
次回は、このSSL証明書の自動更新の設定をします。
おまけ
httpにアクセスしてきたら、httpsにリダイレクトします。
以下のようなVirtualHost
を設定している箇所にmod_rewrie
の記述を追加します。
<VirtualHost *:80>
DocumentRoot /var/www/html/sample.com
ServerName sample.com
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
....
....
設定を有効にするには、Webサーバの再起動が必要です。
これでひと通り作業完了です。無料でSSLが使えるようになりました。
参考サイトは以下です。
『無料で使えるSSL!会社でも自宅でもみんなで let’s encrypt!』