CentOSローカル環境のNginxに自己署名SSL証明書を設定する手順

ローカル開発環境では、公的なSSL証明書を取得できない場合や、ドメイン名が利用できないことがあります。そのような場合、OpenSSLを使用して自己署名証明書を作成することで、HTTPS通信を実現できます。以下、CentOS上のNginxに対して自己署名SSL証明書を設定する手順を説明します。

1. OpenSSLのインストール

まず、OpenSSLとmod_sslをインストールします。

yum install mod_ssl openssl

2. SSL証明書用のディレクトリ作成

Nginxの設定ディレクトリ内にSSL証明書用のフォルダを作成します(場所は任意です)。

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir ssl
[root@localhost conf]# cd ssl/
[root@localhost ssl]#

3. 2048ビットの秘密鍵を生成

openssl genrsa -out server.key 2048

4. 証明書署名要求(CSR)の作成

以下のコマンドを実行すると、対話形式で情報の入力が求められます。テスト環境のため、任意の値を入力して構いません。

openssl req -new -key server.key -out server.csr

5. X509形式の自己署名証明書を生成

有効期間を3650日(約10年)に設定します。

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

6. 生成されたファイルの確認

以下の3つのファイルがSSLディレクトリ内に作成されていることを確認します。

[root@localhost ssl]# ll
総用量 12
-rw-r--r--. 1 root root 1200 1月  25 22:06 server.crt
-rw-r--r--. 1 root root 1005 1月  25 22:06 server.csr
-rw-r--r--. 1 root root 1679 1月  25 22:05 server.key

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

nginx.confのserverブロックに以下のHTTPS設定を追加します。

server
{
    listen 80 default_server reuseport;
    #listen [::]:80 default_server ipv6only=on;
    
    # HTTPS設定開始
    listen       443 ssl;
    ssl_certificate      ssl/server.crt;
    ssl_certificate_key  ssl/server.key;

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

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    # HTTPS設定終了

    server_name _;
    index index.html index.htm index.php;
    root  /home/wwwroot/default;

    #error_page   404   /404.html;

    # Deny access to PHP files in specific directory
    #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

    include enable-php.conf;

    location /nginx_status
    {
        stub_status on;
        access_log   off;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /.well-known {
        allow all;
    }

    location ~ /\.
    {
        deny all;
    }

    access_log  /home/wwwlogs/access.log;
}
include vhost/*.conf;

8. Nginxの再起動

設定を反映させるため、Nginxを再起動します。

[root@localhost ssl]# /etc/init.d/nginx restart

再起動後、ブラウザで https://localhost にアクセスすると、HTTPS接続が確立されていることを確認できます。自己署名証明書のため、ブラウザにはセキュリティ警告が表示されますが、開発・テスト環境としては問題ありません。

タグ: OpenSSL CentOS nginx SSL証明書 自己署名証明書

6月3日 16:09 投稿