Ubuntu Server 18.04 LTS Nginx環境でLet’s Encryptによるhttps接続とhttp/2接続の設定(HTTP-01認証 webroot方式)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

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接続の設定方法は終わりです。
お疲れ様でした。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメント

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください