今回はサイトをHTTPSに対応させる方法を紹介したいと思います。
SSL化というと何か難しそうに聞こえますが、
正しい手順を踏めば全く難しいものではありません。
しかし、HTTPSはHTTPよりもセキュリティが高く、証明書も必要になるのですが
この証明書を発行するためには普通はお金がかける必要があります。
ですが、Let’s Encrypt というものを使うことによって無料で自身のウェブサイトをHTTPSに対応させることができます。
というわけで、その方法を順番に説明していきます。
SSL証明書を発行する
1.certbotのインストール
まずはLet’s Encryptのクライアントソフトであるcertbotをインストールします。
今回はサーバーのOSがCentOS7であるという前提でインストールしていきますが、
UbuntuやCentOS6などのOSを使用している方は以下のリンクよりLet’s Encryptの解説サイトに行ってそれぞれのOSに応じた方法でインストールを行ってください。
https://letsencrypt.jp/usage/install-certbot.html
certbotをインストールするためには、以下のコマンドを打ちます。
ただし、Apache プラグインを使用しない場合には、python-certbot-apache をインストールする必要はありません。
1 2 3 4 5 6 |
sudo yum install epel-release sudo yum install certbot python-certbot-apache |
2.証明書の発行
次に証明書を発行します。
以下のコマンドを打ってください。
1 2 3 4 5 |
certbot certonly --webroot -w 設定するドメインのドキュメントルート -d 設定するドメイン |
Nginxの.confファイルの編集
SSL証明書に成功したら、次にnginxのファイルを編集しなければなりません。
http通信は80番ポートを使って外部と通信をしているのですが、
https通信は443番ポートを使って通信をしています。
なので443番ポートからアクセスできるようにしてあげましょう。
設定ファイルはだいたいの人は /etc/nginx/nginx.conf にあると思うので、そこにある前提で話を進めます。
以下のコマンドで設定ファイルを編集しましょう。
1 2 3 4 5 |
vim /etc/nginx/nginx.conf |
nginx.confの中にserver_name (ドメイン名)のようなところがあると思うのですが、それと同じように
1 2 3 4 5 6 7 8 9 10 |
server { ~~~~~~~省略~~~~~~~ listen 443 ssl http2 default_server; ssl_certificate "/etc/letsencrypt/live/設定したドメイン名/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/設定したドメイン名/privkey.pem"; ~~~~~~~省略~~~~~~~ } |
と書いてください。
また、http:ドメイン名 で接続してきた人を https:ドメイン名 にリダイレクトさせてあげるために、もう一つ設定ファイルを修正します。
1 2 3 4 5 6 7 8 9 |
server { listen 80; server_name 設定したドメイン名; return 301 https://$host$request_uri; } |
return でhttpsの方のURLを返すことでリダイレクトさせることができます。
nginx.confを設定した後、nginxを再起動してください。
1 2 3 4 |
service nginx restart |
https:設定ドメイン名で接続してみて問題なく接続できたら、成功です。
もし余裕がある人は、cronなどを使ってSSL証明書を自動再発行できるように設定してみるといいです。
またリンクなどを張っている場合は、リンクもhttpsに書き換えてあげましょう。
おまけ: WordPressにも対応させたい場合
もしこの記事を読んでいる人の中でWordpressを使っている人は、Wordpressの方も設定をしましょう。
ワードプレス→ダッシュボード から
アドレスをhttpからhttpsに変更してあげてください。
『変更を保存』をクリックすれば変更完了です。