Nginx は、openssl 自己署名証明書を介して HTTPS にアクセスし、安全でないアラームを報告する問題を解決します


1. Nginx が自己署名 SSL 証明書にアクセスすると、https が安全でないアラームを報告します

nginx プロキシは自己署名の ssl 証明書を設定し、https モードでアクセスします。ブラウザは安全でないアラームを報告し、処理プロセスを記録します。

この記事の内容は、https ウェブサイトが nginx+openssl 自己署名証明書を介してアクセスされるときに Google Chrome で報告される安全でないアラームの問題を解決するための

2. 処理手順

1. ルート証明書の秘密鍵とルート証明書を生成する

指定された -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" を使用して、ルート証明書の秘密キーとルート証明書を生成します。

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

###示例:生成100年的
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -subj "/C=CN/ST=guangdong/L=guangzhou/O=gzsendi" -keyout CA-private.key -out CA-certificate.crt -reqexts v3_req -extensions v3_ca

2. 自己署名証明書の秘密キーを生成します -out private.key

openssl genrsa -out private.key 2048

###示例:
openssl genrsa -out private.key 2048

3. 自己署名証明書の秘密キーに基づいて自己署名証明書アプリケーション file-out private.csr を生成します。

####命令:
openssl req -new -key private.key -subj "/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization/CN=192.168.56.101" -sha256 -out private.csr

###示例:
openssl req -new -key private.key -subj "/C=CN/ST=guangdong/L=guangzhou/O=gzsendi/CN=192.168.56.101" -sha256 -out private.csr

4. 自己署名証明書拡張ファイルを定義します (Chrome のセキュリティ警告を解決します)。

自己署名証明書拡張ファイルを定義します (Chrome のセキュリティ警告を解決します)。デフォルトで生成された証明書が信頼できるものとして選択されると、Edge や Firefox などのブラウザでは安全であると表示されますが、Chrome では依然として安全ではないとマークされ、傍受の警告が表示されます。これは、Chrome が拡張機能をサポートするために証明書が必要であるためです。 Subject Alternative Name が異なるため、生成時に SAN 拡張子を指定し、関連するパラメータを追加する必要があります。次の内容をファイルに記述し、private.ext という名前を付けます。

cat > private.ext << EOF
[ req ]
default_bits        = 1024
distinguished_name  = req_distinguished_name
req_extensions      = san
extensions          = san
[ req_distinguished_name ]
countryName         = CN
stateOrProvinceName = Definesys
localityName        = Definesys
organizationName    = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:192.168.56.101
EOF

5. 自己署名証明書を生成します -out private.crt

ルート証明書の秘密キーとルート証明書 - CA CA-certificate.crt-CAkey CA-private.key、自己署名証明書アプリケーション ファイル - private.csr、および自己署名証明書に基づいて自己署名証明書を生成します。 -署名付き証明書拡張ファイル-extfile private.ext-out private.crt

##命令,设置100年的证书有效期
openssl x509 -req -days 36500 -in private.csr -CA CA-certificate.crt -CAkey CA-private.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN

6.nginxの設定

上記で生成したprivate.crtとprivate.keyをnginx配下のsslディレクトリに置きます(sslは単独で作成して対応するファイルを置きます)。

例えば:

    server {
    
    
        listen       8443 ssl;
        server_name  localhost;

        ssl_certificate      /home/testuser/nginx/ssl/private.crt;
        ssl_certificate_key  /home/testuser/nginx/ssl/private.key;

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

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

        location / {
    
    
            proxy_pass http://127.0.0.1:8080/;
            proxy_connect_timeout 30;
            proxy_http_version 1.1;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
            proxy_set_header            Host $host:$server_port;
            proxy_redirect      off;
            proxy_set_header    X-Real-IP        $remote_addr;
            proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        
    }

7. 信頼されたルート証明機関の下に証明書 CA-certificate.crt をインストールすると、安全でない警告が報告されることなく、ブラウザから https の対応する URL に通常アクセスできます。

Guess you like

Origin blog.csdn.net/jxlhljh/article/details/130599339