簡単!Certbotを使ってWebサイトをSSL(HTTPS)化する方法


初心者がインフラ周りを整えるのは非常に大変ですよね。
今回はサイトを簡単にSSL化(HTTPからHTTPS通信)に変更する方法を紹介します!

今回は

Software System
Nginx CentOS7

の環境でSSL化してみようと思います。

iptablesでSSL通信のための443ポートを許可する

iptablesを使っている人は443ポートを解放しましょう。
/etc/sysconfig/iptablesを編集します。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT # ここを追記!!
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

追記したら以下のコマンドを実行する

$ sudo service iptables restart
$ sudo iptables -nL
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443

CertbotでSSL化する

certbotにアクセスすると、

画像のようなページが表示されます。

真ん中のセレクトタグで自分が使っている環境を選びましょう。
今回は

Software System
Nginx CentOS7

の組み合わせでセレクトタグを設定します。

すると各環境に合わせたドキュメントが出てくるのでそれに従いましょう。

Nginx・CentOS7の場合は

$ sudo yum install python2-certbot-nginx
$ sudo certbot --nginx

を実行しましょう。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):(あなたのメールアドレス、認証メールが届くので有効してください)

Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A #Aと入力

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y #Yと入力
Starting new HTTPS connection (1): supporters.eff.org

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: (あなたのドメイン名)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): (SSL化したい上のドメインの選択肢番号)

この後、httpからリダイレクトするかどうかの設定などを聞かれますのでお好みで答えて設定してみてください。

以上でSSL化ができます。
何か疑問点があれば遠慮なく聞いてください!

参照

SSL接続(HTTPS)をやろうとしてはまっている人はiptablesを確認しよう