とあるプロダーツプレイヤーの徒然日記

とあるプロダーツプレイヤーが徒然なるままによしなし事をそこはかとなく書きつくろいます

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

スクリーンショット 2016-01-27 16.21.37.png

Let's Encrypt!