2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nginx Rails unicorn HTTPS SSL 対応

Posted at

nginx rails unicorn HTTPS SSL対応

Overview

今更ではあるが、私のgit hubで開発しているレンタルサーバーが未だhttpである、、、、
HTTPS SSL対応していない、

ので、
対応させてみることにしてみた。

オレオレ証明書

テスト用のサーバーなので、無料の証明書を使う、

公式サイトになります。
https://letsencrypt.org/

下記が参考になります。
https://knowledge.sakura.ad.jp/5573/

これで試してみます。

git hubからソースコードを取得します。

$ cd /usr/local/
$ sudo git clone https://github.com/certbot/certbot
$ cd certbot/

git から取得してきたディレクトリーの中へ移動します。

証明書を発行します。

*** SSLの対応の際にはドメインを取得してください。 ***

今回は例としてドメイン名をhttpsession.workで設定するとして以下のコマンドを実行します。
以下オプションはご自身の設定する内容に書き換えてください。

-wにはドキュメントルートのパス
-mには登録するメールアドレス
-dには認証するドメイン名


 ./certbot-auto certonly --webroot --agree-tos -w /usr/share/nginx/html -m jam330157@gmail.com -d httpsession.work   

上記実行で下記ログを出力します。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for httpsession.work
Using the webroot path /usr/share/nginx/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/httpsession.work/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/httpsession.work/privkey.pem
   Your cert will expire on 2019-01-11. 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

証明書が作成されたか確認する

sudo ls -lrth /etc/letsencrypt/live/httpsession.work
total 4.0K
lrwxrwxrwx 1 root root  43 Oct 13 20:10 privkey.pem -> ../../archive/httpsession.work/privkey1.pem
lrwxrwxrwx 1 root root  45 Oct 13 20:10 fullchain.pem -> ../../archive/httpsession.work/fullchain1.pem
lrwxrwxrwx 1 root root  41 Oct 13 20:10 chain.pem -> ../../archive/httpsession.work/chain1.pem
lrwxrwxrwx 1 root root  40 Oct 13 20:10 cert.pem -> ../../archive/httpsession.work/cert1.pem
-rw-r--r-- 1 root root 682 Oct 13 20:10 README

上記のようになっていれば作成完了です。

ドメインについて

証明書を作成する際に、指定したドメインがサクラなどの場合、ドメインが振られておりますが、そのドメインでは作成できません、

なので、新規でドメインを作成さしてください。

ちなみに .workが安いです。

下記お名前.comのページになります。

nginx conf 編集

/etc/nginx/conf.d/rails.conf


upstream unicorn_server {
    # This is the socket we configured in unicorn.rb
    server unix:/tmp/unicorn.sock
    fail_timeout=0;
}

server {
        listen 80;
        server_name httpsession.work;
        return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    client_max_body_size 4G;
    server_name httpsession.work;

    keepalive_timeout 5;
    ssl_certificate /etc/letsencrypt/live/httpsession.work/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/httpsession.work/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # Location of our static files
    root /usr/share/nginx/html;

    location / {
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_set_header Host $http_host;
        #proxy_redirect off;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;

        # If you don't find the filename in the static files
        # Then request it from the unicorn server
        if (!-f $request_filename) {
            proxy_pass http://unicorn_server;
            break;
        }
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /usr/share/nginx/html;
    }
}

nginx 再起動

$ sudo nginx -t

nginx: the configuration file /etc/nginx/rails.conf syntax is ok
nginx: configuration file /etc/nginx/rails.conf test is successful

$ sudo service nginx restart

Rails unicornの設定編集

config/environments/development.rb

下記を追加してください、コメントアウトされてれば、コメントを解除してください。

config.force_ssl = true

unicorn 再起動

$ kill -QUIT `cat /tmp/unicorn.pid` 
$ bundle exec unicorn_rails -c config/unicorn.rb -E development -D

(☝︎ ՞ਊ ՞)☝︎ 完了!

参考にした記事

SSL周り

nginx 関連

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?