Let's Encryptっていいよね。
証明書の所有者については保証しないなど、いろいろ議論はあるが
個人開発者にとって無料でSSL証明書を発行してくれるありがたいサービスです。
ワイルドカードも対応したとのことでもはや嬉しすぎる。
てなわけで
今回はLet's EncryptをCentOS7にインストールして
Nginxで使えるまでの書き溜めをします
概要
rootユーザーでcertbotをインストール
まずsudoでrootユーザーになっておきます。
1 |
$ sudo su |
cerbotを使用して証明書を発行してもらうのでgitやnginxをいれます。
コピペするだけですが、「YOURDOMAIN.com」をSSL化したいドメイン名で書き換えてください。
1 2 3 4 5 6 7 |
yum install -y vim git epel-release yum install -y nginx git clone https://github.com/certbot/certbot cd /usr/local/certbot ./certbot-auto certonly --standalone -d YOURDOMAIN.com -m admin@YOURDOMAIN.com --agree-tos -n |
証明書発行は終了。
いや、クソ簡単だね。
Nginxの設定ファイルを作成する
Nginxの設定ファイルを作成します。
YOURDOMAIN.comの部分は書き換えてください。
$ vim /etc/nginx/conf.d/myserver.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
server { server_name YOURDOMAIN.com; listen 80; rewrite ^ https://$host$request_uri permanent; } server { server_name YOURDOMAIN.com; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/YOURDOMAIN.com/fullchain.pem; #<= この設定は必須 ssl_certificate_key /etc/letsencrypt/live/YOURDOMAIN.com/privkey.pem; #<= この設定は必須 # trackingid userid on; userid_name sid; userid_domain ***.com; userid_path /; userid_expires 365d; access_log /var/log/nginx/YOURDOMAIN.access.log main if=$log_ua; error_log /var/log/nginx/YOURDOMAIN.error.log; client_max_body_size 100M; error_page 404 /404.html; error_page 500 502 503 504 /500.html; try_files $uri/index.html $uri @rails; set_real_ip_from 10.0.0.0/16; real_ip_header X-Forwarded-For; location / { 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_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8000/; } } |
これでおk
無事SSLで接続できるはずです。
最後にSSL更新方法を残しておきます。
CertbotでSSL更新方法
好きな場所にシェルスクリプトを作成しておけば
crontabで定期実行できるのでファイル作っておいたほうがいいです。
rootになってから下記ファイルを作成してね。
$ sudo su
$ vim /opt/update_ssl.sh
1 2 3 4 5 6 7 |
#!/bin/bash systemctl stop nginx /usr/local/certbot/certbot-auto renew systemctl start nginx |
強制的に再取得する方法で
--force-renewはあまりおすすめしません。
証明局の負荷を考えるとこのオプションをつけないようにしましょう。
1 |
--force-renew |
ファイルを作成したらファイルの権限を変更して
1 |
$ chmod 777 /opt/update_ssl.sh |
crontabを設定します。
毎月1日に実行します。
$ crontab -e
1 |
0 1 1 * * /opt/update_ssl.sh |
これだけ。
簡単だね。
じゃあね〜〜〜〜〜。