Debian 12 (bookworm) - Web サーバ Nginx で SSL 接続!

Updated:


Debian GNU/Linux 12 (bookworm) に構築した Web サーバ Nginx で SSL 接続するための設定についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

  • Debian GNU/Linux 12 (bookworm; 64bit) での作業を想定。
  • クライアント側も Debian GNU/Linux 12 (64bit) を想定。
  • サーバ用途なので、作業は基本的に全て一般ユーザから root になって行う。
  • Web(HTTP)サーバ Nginx が「Debian 12 (bookworm) - Web サーバ Nginx 構築(Nginx 公式リポジトリ使用)!」の方法で導入済みであることを想定。
  • 今回は SSL サーバ証明書は自分で作成するが、後日、 Let’s Encrypt で無料で証明書を取得するようにする。
  • 当方はメールサーバ構築時に SSL 証明書作成済みであったので、以下の “2” から作業を行なった。
  • root ユーザでの作業を想定。

1. SSL 証明書の作成

openssl 未インストールならインストール。

# apt -y install openssl

秘密鍵生成。

# cd /etc/ssl/private
# openssl genrsa -des3 -out server.key 2048
Enter PEM pass phrase:                         # <= パスフレーズ設定
Verifying - Enter PEM pass phrase:             # <= 確認再入力

秘密鍵からパスフレーズを削除。

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:              # <= パスフレーズ
writing RSA key

# openssl req -new -days 3650 -key server.key -out server.csr
Ignoring -days without -x509; not generating a certificate
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP                                    # <= 国の略名
State or Province Name (full name) [Some-State]:Shimane                 # <= 都道府県名
Locality Name (eg, city) []:Matsue                                      # <= 市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:var.com      # <= サイト名(何でもよい)
Organizational Unit Name (eg, section) []:                              # <= 部署名(空でよい)
Common Name (e.g. server FQDN or YOUR name) []:www.var.com              # <= ホスト名
Email Address []: webmaster@var.com                                     # <= 管理者メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:                                                # <= 追加属性・空エンターでよい
An optional company name []:                                            # <= 追加属性・空エンターでよい

# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Certificate request self-signature ok
subject=C = JP, ST = Shimane, L = Matsue, O = mk-mode.com, CN = www.mk-mode.com, emailAddress = webmaster@mk-mode.com

権限選定。

# chmod 400 server.*

2. Nginx 設定ファイルの編集

以下のように、Nginx 設定ファイルを作成する。
(Nginx のインストール方法やバージョンによっては設定ファイルの構成が異なるので注意。以下は「Debian 12 (bookworm) - Web サーバ Nginx 構築(Nginx 公式リポジトリ使用)!」の方法でインストールした場合)

File: /etc/nginx/conf.d/ssl.conf

# HTTPS server
#
server {
    listen       443 ssl;
    server_name  localhost;

    #ssl_certificate      cert.pem;
    ssl_certificate      /etc/ssl/private/server.crt;
    #ssl_certificate_key  cert.key;
    ssl_certificate_key  /etc/ssl/private/server.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers                HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}
  • 設定ファイルの文法をチェックするには nginx -t を実行する

3. Nginx の再起動

# systemctl restart nginx

4. ファイアウォール(ufw)の設定

ポート TCP:443 を開放する。

# ufw allow 443/tcp
Rule added

# ufw status
    :
443/tcp                    ALLOW       Anywhere
    :

5. 動作確認

ブラウザから https://<サーバ名orIPアドレス>/ にアクセスし、セキュリティに関するページが表示されたら適宜インストールする。
ブラウザにより異なるが、Firefox なら「危険を理解した上で接続するには」をクリック後「例外追加」ボタンをクリックする。そして開いたウィンドウ内で「セキュリティ例外を追加」ボタンをクリックする。
認証に成功すると以下のように表示される。

6. 参考サイト


以上。





 

Sponsored Link

 

Comments