Ubuntu Server 18.04 LTS でNginx環境でのLet’s Encryptによるhttps接続とhttp/2接続の設定方法を備忘録としてまとめておきたいと思います。
前提条件
Nginxで80番ポート(http)のアクセスが外部から可能であること。
Let’s Encrypt(Certbot)インストール
$ sudo spt install certbot
Certbotを使って証明書の発行
# -w の後は証明書を発行するドメインのルートディレクトリ # -d の後は証明書を発行するドメイン(FQDN) $ sudo certbot certonly --webroot -w /var/www/html/www.hoge.hoge/wordpress -d www.hoge.hoge #メールアドレスを求められる Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):メールアドレスを入力 #規約への同意確認 ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: 同意するならAを入力 #EFFへのメールアドレス登録確認 ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: 同意するならAを入力 #成功すると以下の様な文に鍵の保存先が書かれています。 IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.hoge.hoge/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.hoge.hoge/privkey.pem Your cert will expire on 2019-01-10. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
Nginx設定ファイルの編集
#Nginxの設定ファイルを開く #listen 443;の中に #ssl_certificate サーバ証明書(署名済)のパス #ssl_certificate_key サーバ秘密鍵(パスワード削除済)のパス ssl_certificate /etc/letsencrypt/live/www.hoge.hoge/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.hoge.hoge/privkey.pem; #を記述
設定ファイル全文例
- 設定内容
- http→https リダイレクト
- https 有効化
- http/2 有効化
- php-fpm 有効化
- WordPress パーマリンク 有効化
# /etc/nginx/sites-available/www.hoge.hoge_ssl server { listen 80; server_name www.hoge.hoge; return 301 https://$host$request_uri; } server { listen 443 http2; ssl on; server_name www.hoge.hoge; root /var/www/html/www.hoge.hoge/wordpress; index index.html index.htm index.php; ssl_certificate /etc/letsencrypt/live/www.hoge.hoge/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.hoge.hoge/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_ciphers HIGH:!aNULL:!MD5; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
補足:Nginx新規設定ファイルの有効化方法
こちらの
Ubuntu Server 18.04 LTS Nginxのバーチャルホスト設定
の最後の方にシンボリックリンクを張る方法を載せております。
Nginxの再起動をする
$ sudo systemctl restart nginx
Timerを使ってCertbot自動更新設定
Serviceファイル作成
$ cd /etc/systemd/system $ sudo nano certbot.service [Unit] #このServiceの説明(タイトル) Description=Certot renew service [Service] Type=oneshot #certbot renewコマンドを実行 ExecStart=/usr/bin/certbot renew --agree-tos #Nginxの設定再読み込みを実行 ExecStartPost=/bin/systemctl reload nginx
Timerファイル作成
$ cd /etc/systemd/system $ sudo nano certbot.timer [Unit] #このTimerの説明(タイトル) Description=Certbot renew Timer [Timer] #実行する時間の設定(以下の場合、毎日朝6時に実行する設定) OnCalendar=*-*-* 06:00:00 #実行するServiceファイルを指定 Unit=certbot.service [Install] WantedBy=timers.target
補足:OnCalendarの設定について
こちらの
Ubuntu Server 18.04 LTS Systemd/timerで定期実行する設定
にOnCalendarの設定項目として載せております。
Timerを有効化
$ sudo systemctl start certbot.timer $ sudo systemctl enable certbot.timer
以上で、Ubuntu Server 18.04 LTSのNginx環境でLet’s Encryptによるhttps接続とhttp/2接続の設定方法は終わりです。
お疲れ様でした。
コメント