序文
-
日常の開発において、パブリック ネットワーク上のプロジェクトにアクセスするときは、通常、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