本記事ではNginx環境においてWebサイトにSSL設定を行う手順を解説する。
目次
前提条件
本記事では以下の環境を前提としている。
Linux 環境 | |
OS | Debian 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にアクセスして、表示されればうまくいっている。
NginxのTIPSリンク集
- Nginxのログフォーマット設定と出力ログの見方を解説
- Nginxを再起動前にコマンドで文法チェックや設定誤りを確認をする方法
- [Nginx]オレオレCA認証局でSSL通信をする手順。サーバ証明書・秘密鍵・証明書署名要求の作成方法
- [Nginx]オレオレCA認証局を利用したクライアント証明書通信をする手順
- Nginxのログ一覧・ログ設定・ログ出力先の確認・設定方法を解説
- NginxでBasic認証の設定する方法
- Nginxの設定ファイル(.conf)の書き方と設定方法
- Nginxでリバースプロキシの構築・設定方法
- NginxでSSL設定してHTTPS通信をする手順
- NginxのVirtualhostを使って1つのサーバーでサブドメインを公開する手順
- [Nginx] サブディレクトリのアクセスを異なるWebサーバーにアクセスを振り分ける方法