Let'sEncriptでhttps化してみました。

今更ながらなんですが、自分の独自ドメインのサイトをhttps化しておこうと思って
LetsEncryptの設定をぶち込んでみました。後は現時点で最適と思われる
セキュリティを設定しています。
最近はApacheよりNginXいじくるほうが多くなってきています。
特に意味はないですけど。で今回は外部のサーバなのでホスト設定済前提で
NginXのインストールからの作業になります。


◆大まかな手順
1.事前確認
・CPU数の確認
2.nginxインストール
(1)nginxサイトが配布するPGPキーを追加
(2)リポジトリを一覧に追加
(3)NginXインストール
・aptアップデート
・NginXインストール
・NginXバージョン確認
3.nginx設定
・設定ファイル編集(worker_process最適化とバナーを隠す)
・サイトのディレクトリ作成
・Git設定
3.Let'sEncryptionインストール
(1)Let'sEncryptionクライアントの入手
・Gitからのコピー
・初期設定
・TUIの設定
・証明書自動更新設定
(2)NginX設定
・PFS用PEMファイル作成
・設定ファイル編集
・nginx再起動


◆参考サイト
https://www.deep-deep.jp/blog_engineer/archives/3245
http://qiita.com/ksworks/items/cbc7b73c62c5e115d830
http://qiita.com/kieaiaarh/items/3455040597ee34c8c49e
http://gotagotagoat.hatenablog.com/entry/2014/02/19/Nginx%E3%81%A7%E8%87%AA%E5%AE%85%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E6%A7%8B%E7%AF%89
http://server-setting.info/ubuntu/nginx-wordpress-ubuntu14.html
http://www.atmarkit.co.jp/ait/articles/1407/24/news003.html
http://www.sakc.jp/blog/archives/39442
https://ryuzi.wordpress.com/2011/10/03/nginx-%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%99%E3%82%8B/
http://qiita.com/kidach1/items/985efebba639713c562e
http://qiita.com/kidach1/items/985efebba639713c562e
http://qiita.com/hito3/items/0e539e82ee3c410cccf1
http://christina04.hatenablog.com/entry/2015/07/21/094631
http://qiita.com/hiroq/items/420424bc500d89fd1cc8
http://blog.kondoyoshiyuki.com/2012/12/09/setting-1-nginx-on-ubuntu-12-04/
http://yume-build.com/blog/archives/257
http://news.mynavi.jp/news/2010/03/09/013/
http://qiita.com/kieaiaarh/items/3455040597ee34c8c49e
http://qiita.com/utano320/items/36b6eac2bbd5bb5657f6
https://letsencrypt.jp/
http://qiita.com/sak_2/items/ff835b669c0a7e110b09
http://qiita.com/ww24/items/9fa19594b4e3a8eb9b6f
http://inside.pixiv.net/entry/2015/12/10/153114
http://yamano3201.hatenablog.jp/entry/2016/04/23/113528
http://postd.cc/https-on-nginx-from-zero-to-a-plus-part-1/
https://blog.kksg.net/posts/nginx-secure-ssl
http://qiita.com/harukasan/items/fe37f3bab8a5ca3f4f92
http://cameong.hatenablog.com/entry/2016/04/20/174412

◆細かい作業
1.事前確認
・CPU数の確認
パラメータ設定で使用する。
$ sudo grep processor /proc/cpuinfo | wc -l
2


2.nginxインストール
(1)nginxサイトが配布するPGPキーを追加
$ sudo curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add

(2)リポジトリを一覧に追加
$ sudo sh -c "echo 'deb http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"
$ sudo sh -c "echo 'deb-src http://nginx.org/packages/ubuntu/ trusty nginx' >> /etc/apt/sources.list"

(3)NginXインストール
・パッケージリスト更新
$ sudo apt-get update
Ign http://jp.archive.ubuntu.com trusty InRelease
Get:1 http://jp.archive.ubuntu.com trusty-updates InRelease [65.9 kB]
~中略~
Hit http://security.ubuntu.com trusty-security/universe Translation-en
Fetched 4,162 kB in 6s (655 kB/s)
Reading package lists... Done

・NginXインストール
$ sudo aptitude install nginx
The following NEW packages will be installed:
  nginx
~中略~
$

・インストール後NginXバージョン確認
$ sudo nginx -v
nginx version: nginx/1.10.1

3.nginx設定
・設定ファイル編集(worker_process最適化とバナーを隠す)
$ sudo vi /etc/nginx/nginx.conf

※下記の内容で編集
user www-data;
worker_processes 2; ←2(CPUの数)に修正
pid /run/nginx.pid;

http {
        server_tokens off; ←追記
        ##


・サイトのディレクトリ作成
$ sudo mkdir -p /var/www
$ sudo mkdir -p /var/www/sitename

・Git設定
$ cd /var/www
$ sudo git init
$ git config --global user.name 'userName'
$ git config --global user.email 'your@hoge.com'
Initialized empty Git repository in /var/www/.git/
$ sudo git remote add -A
$ sudo git add index.html
$ sudo git commit -m 'first commit'
$ git push --set-upstream sitename master

3.Let'sEncryptionインストール
(1)Let'sEncryptionクライアントの入手
・Gitからのコピー
$ cd /usr/local
$ sudo git clone https://github.com/letsencrypt/letsencrypt
Cloning into 'letsencrypt'...
~中略~
Resolving deltas: 100% (28522/28522), done.
Checking connectivity... done.

・初期設定
$ cd letsencrypt/
$ ./letsencrypt-auto --help
Bootstrapping dependencies for Debian-based OSes...
~中略~
  all, automation, paths, security, testing, or any of the subcommands or
   plugins (certonly, install, register, nginx, apache, standalone, webroot,
   etc.)


・TUIの設定
$ ./letsencrypt-auto certonly --webroot-d sitename -d www.sitename --webroot-path /var/www/sitename
~中略~
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

TUI表示時に下記の手順に注意
※EMailアドレス入力
※Agreeで規約に同意する

・証明書自動更新設定
$ sudo su
# crontab -e

※下記のとおりコマンドを追記
00 05 01 * * /etc/init.d/nginx stop && /usr/local/letsencrypt/letsencrypt-auto renew --force-renew && /etc/init.d/nginx start


(2)NginX設定
・PFS用PEMファイル作成
$ sudo mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ sudo openssl dhparam 2048 -out dhparam.pem
Generating DH parameters, 2048 bit long safe prime, generator 2
~中略~

・設定ファイル編集
$ sudo vi /etc/nginx/conf.d/default.conf

※下記のとおり編集
server {
        listen 80; # httpへのアクセスをhttpsへリダイレクトする
        listen [::]:80;
        server_name  sitename;
        if ($http_x_forwarded_proto != https) {
            return 301 https://$host$request_uri;
        }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl on;
    server_name  sitename.com;
    root   /var/www/sitename.com;
    index  index.html index.htm;

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_certificate /etc/letsencrypt/live//sitename.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live//sitename.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;

}


・nginx再起動
$ sudo service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo service nginx reload

コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)