Let's Encrypt + Nginxでhttpsアクセスにする!
概要
Let's Encryptを使って、友人に作ってあげた塾のWebページをhttpからhttpsアクセスにした話。 このページはNginxを使っているので、そこをhttpsにする設定も記す。
Let's Encryptとは?
Let's Encryptは、独自ドメインとWebサーバがあれば、誰でも簡単に Let's Encrypt の SSL/TLS 証明書を取得することができるオープンソースの取り組み。
SEO的にもhttpsの方が評価が高いらしいので、検索順位を上げたいなら導入する価値がある。(参考:『HTTPSをSEOで優遇』 SSL化を推奨するアルゴリズム導入をGoogleが公式発表)
通常のSSL証明書を導入しようとしたらそこそこ高いので、そこまでセキュアじゃなくてもいいならばこれで充分かと。 もちろん、無料のものと有料のものには差があるので、そこを認識した上で使うこと。 参考:無料SSL/TLS証明書ができないこと
とりあえず、証明書を発行する
Let's Encrypt の使い方に従い、進める。 基本的にはこの通り。 コマンドだけまとめておく。
443ポートの開放と80ポート使っていたらそのプロセスを止めることを忘れずに。
letsencrypt導入
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt/ $ ./letsencrypt-auto --help $ netstat -na | grep ':80.*LISTEN' # 80ポートを使っているものがないかを探す $ sudo service nginx stop # あれば止める $ sudo emacs /etc/sysconfig/iptables #443ポートを開放しないといけないので $ # /etc/sysconfig/iptablesに下記を追加 $ # -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT $ sudo /etc/init.d/iptables restart # iptableをリスタート $ ./letsencrypt-auto certonly -a standalone -d 自分のドメイン
※pythonが古いと怒られるので、pythonの入れる 参考:PyenvによるPython3.x環境構築(CentOS, Ubuntu)
nginxの設定
$ sudo emacs /etc/nginx/conf.d/default.conf # nginxのconfをいじる
以下、nginx設定サンプル
upstream unicorn { server unix:/tmp/unicorn.sock; } # httpをhttpsへリダイレクト server { listen 80; server_name www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name www.example.com; # www.example.comの部分は適宜、自分のドメインに置き換える ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # www.example.comの部分は適宜、自分のドメインに置き換える ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; access_log /var/log/nginx/sample/sample_access.log; error_log /var/log/nginx/sample/sample_error.log; root /var/tmp/sample; location @unicorn { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://unicorn; proxy_redirect http:// https://; } }
nginxをrestartすれば完了!
$ sudo service nginx restart
Let's Encrypt!