open ssl

ローカルCA Nginx テスト用

ローカル内のウエブサーバーNginxを簡単に暗号化して https 通信できるようにしたい。簡単な方法。

自己署名証明書でサクッとHTTPS

事前準備(名前解決)

ここでは、ドメイン名を

nginx.home

とします。

				
					# サーバー自身/手元PCの双方に
127.0.0.1   nginx.home
				
			

証明書を作る(SAN 必須)

近年のブラウザは CN ではなく SAN を見ます。

※ CN」はCommon Name(コモンネーム)、「SAN」はSubject Alternative Name(サブジェクト・オルタナティブ・ネーム)を指します。

CN(Common Name):
従来のSSL/TLS証明書で、主に単一のドメイン名を指定するために使用されていました。例えば、「www.example.com」のように、一つのホスト名を指定します。

SAN(Subject Alternative Name):
複数のドメイン名やIPアドレスを一つの証明書でカバーするために使用されます。これにより、一つの証明書で「www.example.com」と「blog.example.com」や、異なるドメインである「example.net」なども同時に保護することが可能になります。

ディレクトリの作成

ディレクトリを作成と証明書を作るディレクトリに移動。

				
					mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
				
			

証明書を作成

証明書を作成しますが、実行したディレクトリに作られますので、注意してください。

				
					openssl req -x509 -newkey rsa:2048 -nodes -sha256 -days 365 \
  -keyout nginx.home.key \
  -out    nginx.home.crt \
  -subj "/C=JP/ST=Local/L=Local/O=Local/OU=Dev/CN=nginx.home" \
  -addext "subjectAltName=DNS:nginx.home,IP:127.0.0.1"
				
			

権限をrootだけに

モードを変更して。他のユーザーが見たり書き換えたりできないようにする。

				
					chmod 600 /etc/nginx/ssl/nginx.home.key
				
			

Nginx をHTTPS対応

nginx の設定ファイルを作成

nginx の設定ファイルをHTTPSに対応できるように作成または変更追加する。

/etc/nginx/sites-available/nginx.home.conf(新規または既存を編集):

				
					# HTTP→HTTPS リダイレクト
server {
    listen 80;
    server_name nginx.home;
    return 301 https://$host$request_uri;
}

# HTTPS 本体
server {
    listen 443 ssl http2;
    server_name nginx.home;

    ssl_certificate     /etc/nginx/ssl/ca/nginx.home.crt;
    ssl_certificate_key /etc/nginx/ssl/ca/nginx.home.key;

    # TLSの基本(ローカル検証向けのシンプル設定)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    root /var/www/html/wordpress;          # 実際のドキュメントルート
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # (PHP-FPMを使う場合の例)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 使っているバージョンに合わせる
    }
}
				
			

作成したファイルを有効化

/etc/nginx/sites-enabled/ にあるファイルをnginx.conf に読み込む設定なので、シンボリックフィンクを作る。

				
					ln -s /etc/nginx/sites-available/nginx.home.conf /etc/nginx/sites-enabled/
				
			

設定ファイルに間違いがないかテスト

設定を反映させる

				
					nginx -t

systemctl reload nginx
				
			

Fastcgi キャッシュ用のファイル

nginx設定用ファイル作成

/etc/nginx/sites-available/

/etc/nginx/sites-available/nginx.home.conf(新規または既存を編集):

				
					# HTTP→HTTPS リダイレクト
server {
    listen 80;
    server_name nginx.home;
    return 301 https://$host$request_uri;
}

# HTTPS 本体
server {
    listen 443 ssl http2;
    server_name nginx.home;

    ssl_certificate     /etc/nginx/ssl/ca/nginx.home.crt;
    ssl_certificate_key /etc/nginx/ssl/ca/nginx.home.key;

    # TLSの基本(ローカル検証向けのシンプル設定)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    root /var/www/html/wordpress;          # 実際のドキュメントルート
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # (PHP-FPMを使う場合の例)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 使っているバージョンに合わせる
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 301 302 60m;
        fastcgi_cache_use_stale error timeout invalid_header htt
p_500;
        fastcgi_cache_lock on;  
    }
}
				
			

上と同様に、シンボリックリンクを確認または作成する。

/etc/nginx/nginx.conf

http {
……………..
……………..
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
fastcgi_cache_key “$scheme$request_method$host$request_uri”;

}

http ディレクティブに追記する。

				
					        fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
				
			

あとは、上で行ったように有効化と反映をする。

ローカルCA Nginx テスト用

コメントを残す

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

関連コンテンツ

nginx

Nginxでhttp2

HTTP/2を導入する主なメリットは、ウェブページの読み込みを高速化によるウェブサイトの表示速度の向上です。

nginx icon

Nginx install

web server nginx install WEBサーバーNginxをインストール

最近の記事

ローカルCA Nginx テスト用