Nginx は ssl 証明書を構成し、それを https プロセスの詳細に暗号化します (ssl ディレクティブは非推奨です - 証明書をロードできません)

序文

  • 日常の開発において、パブリック ネットワーク上のプロジェクトにアクセスするときは、通常、https:// (http:// はほとんどありません) で始まる安全な接続を使用します。

  • 自分でドメイン ネーム サーバーを構成すると、証明書を構成していないため、http は実際に Nginx 経由で転送されます。

  • ブラウザは、送信が標準に従って暗号化されていないことに気づき、接続が安全でないと判断しますが、使用には影響しません。

  • 実は、独自ドメイン名の場合には、対応する無料のSSL証明書申請がありますが、自分たちで申請したわけではありません。

条件と条件

  • 私のドメイン名は Alibaba Cloud (ドメイン名解決) によって購入され、サーバーは Tencent Cloud (軽量クラウドサーバー) です。

  • サーバーとドメイン名は登録されており、正常にアクセスできます。サーバーは Windows ミラーです

  • Alibaba Cloud にドメイン名の SSL 証明書を申請してください ドメイン名の SSL 証明書は 1 対 1 対応です (第 2 レベルのドメイン名も申請する必要があります)

  • 必ずサーバーにアクセスして、https-443 ポートが開いているかどうかを確認してください。通常、デフォルトで開いています。

実装プロセス

1. まず、Alibaba Cloud を開きます - ログインしてドメイン名アカウントを購入します - コンソール検索をクリックします - デジタル証明書管理サービス

2. 無料の証明書をクリックします。初めて仮想証明書を作成するには、クリックする必要があります (無料の証明書は 20 個あります)。

3. [証明書の作成] を再度クリックします - 下に行が表示されます - 右側の [証明書の申請] をクリックします - 対応する情報を入力します - 審査のために送信します - 通常、合格するまでに約 10 分かかり、SMS と電子メールで通知されます。

4. Nginx モードの ssl 証明書をダウンロードします - 使用法ドキュメントを表示します (レビューに合格すると、右側にダウンロード ボタンが表示されます)

5. サーバーの nginx-html ファイルに移動します - 証明書を保存するための ssl ファイルを作成します

6. nginx-conf-nginx.conf 構成ファイルを変更します。

worker_processes  1;
events {
    worker_connections  1024;
}
​
​
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65; 
   
   # 这个server负责默认转发到https,配置证书之后,只是http和https都可以访问,但是默认还是http访问
      #  这一段是默认https访问-官方文档有讲   
   server {
    listen 80;
    #填写证书绑定的域名
    server_name 你的域名;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
       location / {
           index index.html index.htm;
        }
    }
    
    server {
        #listen       80;
        #定义服务器的默认网站根目录位置
            server_name  你的域名;
        # 开启ssl证书-这种写法淘汰-会报错
        #ssl on;
            # 开启https端口-默认 
        listen 443 ssl;
        # 证书凭证-./相对路径
            ssl_certificate         ./html/SSL/FW/你的域名.pem;
            ssl_certificate_key     ./html/SSL/FW/你的域名.key;
        # 系统配置-可要可不要
        ssl_session_cache shared:SSL:1m;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
            #表示优先使用服务端加密套件。默认开启
            ssl_prefer_server_ciphers on;
        
        location / {
            root   html/fw/dist;
            index  index.html index.htm;
        try_files $uri $uri/ /index.html; #解决页面刷新404问题
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
​
    }
​
}
 
 

7. nginx restart コマンドを使用して構成を更新します

nginx -s リロード

8. デフォルトのエントリは https (安全な接続) で、エラーは報告されません。これは、構成が成功したことを示します。

詳細

  • SSL 証明書をダウンロードしてサーバーに配置した後は、名前を変更しないようにしてください (www./www. なしでも影響を受けません)。

  • 証明書を導入するときは、エラーを防ぐために (./) - 相対名を使用します。必ずパスを確認してください -

エラーレポート収集

1. ssl コマンドを有効にしてエラーを破棄します。ssl ディレクティブは非推奨です。

解決策 - コマンドを変更します。

# 开启ssl证书-这种写法淘汰-会报错
# ssl on;
# 开启https端口-默认-改用下面写法 
listen 443 ssl;

2.SSL証明書パスを導入し、エラーを報告します - 証明書をロードできません

解決

パスを確認してください - ./ path を使用することをお勧めします

3. ssl 証明書が構成されていることが判明した場合、エラーは報告されず、起動は成功します。アクセスが http のままの場合、サーバー層が構成されていないためです - 注


要約:

このプロセスを経ると、Nginx 構成の SSL 証明書と https プロセスへの暗号化 (SSL ディレクティブは非推奨です - 証明書をロードできません) の詳細についても最初に深い印象を受けると思いますが、実際の開発では、遭遇するものは異なるものでなければなりません。したがって、私たちはその原則を理解し、その原点から決して逸脱しない必要があります。さあ、労働者を殴ってください!

欠点があればご指摘ください、ありがとうございます - Feng Guo Wuhen

おすすめ

転載: blog.csdn.net/weixin_53579656/article/details/132938985