【Nginx】Let’s Encrypt 新規SSL証明書発行手順のメモ

プログラミング初心者の勉強ブログ #138

前にやったLet’ EncryptのSSL証明書が切れ、再度新規で申請したが前にやったことを忘れてしまってログを遡ってなんとか思い出した。時間取られすぎたのでここにまとめておく。

 

目次

[toc]

 

概要

  1. certbot.confの編集 – パスを通すためのプロキシを設定する
  2. nginxのリロード – 大切
  3. certbotで申請
  4. リバースプロキシの編集 – 取得した証明書を指定してSSL実装

前提

  • ドメインはすでに取得済みで、DNS関連も設定済みである
  • Nginxはプロキシサーバーとして使用している

仕組み

イメージでざっくり。

  • certbotがSSL証明書を取得したいドメインに対し、独自に指定したパスへ自動でHTTPリクエストを送る
  • certbotはレスポンスに指定した文字列が返却されてきているかをみている
  • こっちは指定したディレクトリで文字列を反映させて待っている必要がある
    • だたし、パスさえ指定すればそのディレクトリに対して自動で文字列を用意したファイルを用意してくれる(あくまでイメージ)みたいなので、こちらはNginxのプロキシ設定でパスを通す必要がある

手順

certbot.confの編集

1, ファイルの場所
vim /etc/nginx/conf.d/certbot.confで設定ファイルを編集

2, 内容
certbot.confは普段は中身をコメントアウトしている

certbot.conf

server {
    listen 80;
    server_name example.com; #ドメイン指定

    # いじらないで大丈夫
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/html;
    }
}

server_nameで、証明書を発行するドメインを指定する
その他はいじらなくて大丈夫。

nginxのリロード

nginx -tで確認し、
nginx -s reloadでリロード

certbotで申請

1, カレントディレクトリの移動
cd /usr/local/certbotに移動

2, コマンド
./certbot-auto certonly --webroot --agree-tos -w /var/www/html -m example@gmail.com -d example.com
最後の部分のドメインを変更するだけ。

リバースプロキシの編集

1, confファイルの編集
sslのfullchain.pemprivkey.pemを設定する

作成されたファイルを確認するコマンド↓
ls -lrth /etc/letsencrypt/live/example.com/

ファイル作成→編集
vim /etc/nginx/conf.d/example.com.conf

example.conf

server {
    listen       80;
    server_name  example.com;
    return       301 https://example.com;
}

server {
    listen       443 ssl;
    server_name  example.com;
    root /var/www/xxxxxx;
    index index.php;
    client_max_body_size 20M;

    charset utf-8;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    access_log /var/log/nginx/xxxxxx_access.log;
    error_log /var/log/nginx/xxxxxx_error.log;

    location ~* /wp-config.php {
        deny all;
    }

    location ~ \.php$ {
        root           /var/www/xxxxxx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA