NginxでSSL設定してHTTPS通信をする手順

本記事ではNginx環境においてWebサイトにSSL設定を行う手順を解説する。

目次

前提条件

本記事では以下の環境を前提としている。

Linux 環境
OSDebian GNU/Linux 12 (bookworm)
ミドルウェアnginx(1.25.5)
証明書発行Let’s Encriptを使って証明書発行を行う

SSL設定手順

NginxでSSLを設定するには、以下の手順を行う。基本的なSSL設定の手順を説明する。

1. Certbotのインストール

まずは、サーバーにCertbotをインストールするため、以下のコマンドを実行する。

# sudo apt update
# sudo apt install certbot python3-certbot-nginx

2.SSL証明書の発行

# sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): xxx@gmail.com

xxx@gmail.com の部分にはメールアドレスを入力する。

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?

(Y)es/(N)o: yを押してEnterキー押す。

Would you be willing, once your first certificate is successfully issued, 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 our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.

(Y)es/(N)o: yを押してEnterキー押す。

Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/serve
r block.
1: sub.daikidomon.com
2: main.libproc.com
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 2を押してEnterキー押す
Requesting a certificate for main.libproc.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/main.libproc.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/main.libproc.com/privkey.pem
This certificate expires on 2024-12-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in t                                             he background.

Deploying certificate
Successfully deployed certificate for main.libproc.com to /etc/nginx/nginx.conf
Congratulations! You have successfully enabled HTTPS on https://main.libproc.com
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

3. Nginxの設定ファイルを編集

Nginxの設定ファイルを編集してSSLを有効化する。

<nginx.confの例>

server {
    listen 80;
    server_name main.libproc.com;
    return 301 https://$host$request_uri;  # HTTPからHTTPSへリダイレクト
}
server{
    listen 443 ssl;  # SSLを有効化
    server_name main.libproc.com;

    ssl_certificate /etc/letsencrypt/live/main.libproc.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/main.libproc.com/privkey.pem; 

    ssl_protocols TLSv1.2 TLSv1.3;  # 使用するSSL/TLSプロトコル
    ssl_ciphers HIGH:!aNULL:!MD5;  # 使用する暗号スイート

    location / {
        root /usr/share/nginx//html;  # サイトのルートディレクトリ
        index index.html;
    }
}

4. hostsファイルの編集

次はhostファイルの設定を行う。今回、main.libproc.comというドメイン名でNginxの画面を表示するので、ホストファイルを編集して、main.libproc.comをIPアドレス(52.69.161.215)にマッピングすることで、ドメイン名を解決できるようにする。hostsファイルの場所は/etc/hosts。ファイルの末尾に、以下を追加する。

52.69.161.215    main.libproc.com

5. Nginxの設定をテスト・再起動

設定ファイルを保存したら、Nginxの設定が正しいかどうかをテストする。

# sudo nginx -t

エラーがないことを確認したら、Nginxを再起動する。

# sudo systemctl restart nginx

これで、NginxでSSL設定が有効になる。

ブラウザからhttps://main.libproc.comにアクセスして、表示されればうまくいっている。

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次