サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテキストで送信されます。これにより、パケットキャプチャツールを使用してユーザーのパスワード情報を取得することが可能になり、非常に危険です。また、データの一貫性と整合性を検証することは不可能であり、送信中にデータが変更されていないことを保証することはできません。したがって、Web サイトにユーザー アカウントなどの重要な情報が含まれる場合は、通常、SSL 証明書を構成して使用し、https プロトコルを実装する必要があります。 実稼働環境での SSL 証明書は、サードパーティの認証機関を通じて購入する必要があります。プロフェッショナル版の OV 証明書 (ブラウザのアドレスバーに会社名が表示されない) とアドバンス版の EV 証明書 (会社名を表示できる) に分かれています。証明書で保護されるドメイン名の数も価格に影響します (たとえば、www 証明書とワイルドカード * 証明書では価格が異なります)。また、サードレベルドメイン名はサポートされていません。テスト中に、証明機関として自分で証明書を作成できます。ブラウザには証明書が期限切れまたは無効であることを示す赤色で表示されます。黄色の場合は、Web サイトの一部の接続がまだ http プロトコルを使用していることを意味します。 どちらの方法を使用する場合でも、証明書を取得した後の Nginx の設定は同じなので、ここでは OpenSSL の設定と証明書の作成について詳しく説明します。 1. 環境を整える1) nginx サービス 2) SSLモジュール [root@ns3 ~]# systemctl 停止firewalld [root@ns3 ~]# iptables -F [root@ns3 ~]# setenforce 0 [root@ns3 ~]# yum -y インストール pcre zlib pcre-devel zlib-devel [root@ns3 ~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/ [root@ns3 ~]#cd /usr/src/nginx-1.16.0 [root@ns3 ~]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module&&make && make install #後で必要なモジュールを一度にインストールします 3) opensslがインストールされているかどうかを確認する [root@ns3 ~]# rpm -qa openssl 2 openssl-1.0.1e-42.el7.x86_64 インストールされていない場合 [root@ns3 ~]# yum -y openssl をインストール openssl-devel 2. ルート証明書CAを作成する1. CA秘密鍵を生成する [root@ns3 ~]# cd zhengshu/ [root@ns3 zhengshu]# openssl genrsa -out local.key 2048 RSA秘密鍵の生成、2048ビット長の係数 .............................................................................................................................................................................................................................................................................+++ .............................................................................................................................................................................................................................+++ eは65537(0x10001) [root@ns3 鄭州]# ls ローカルキー 2. CA証明書要求を生成する [root@ns3 zhengshu]# openssl req -new -key local.key -out local.csr 組み込まれる情報を入力するよう求められます 証明書リクエストに追加します。 これから入力するのは、識別名または DN と呼ばれるものです。 フィールドはたくさんあるが、一部は空白のままにしておくこともできる いくつかのフィールドにはデフォルト値があります。 「.」を入力すると、フィールドは空白のままになります。 ----- 国名 (2 文字コード) [XX]:CN #州または県名 (フルネーム) []:BJ #地域名 (例: 市) [デフォルトの市]:BJ #組織名 (例: 会社) [デフォルトの会社 Ltd]: 組織単位名(例:セクション)[]:test #部門共通名(例:あなたの名前またはサーバーのホスト名)[]:test #ホスト名メールアドレス[]:[email protected] #メール次の「追加」属性を入力してください 証明書のリクエストと一緒に送付されます チャレンジパスワード []:wuminyan #Password オプションの会社名 []:wuminyan #Name [root@ns3 zhengshu]# ls ローカル.csr ローカル.キー req: これは、証明書要求ファイルの生成、証明書の検証、およびルート CA の作成を提供する大規模なコマンドです。 -new: 新しい証明書要求を生成することを意味します -x509: 証明書を直接出力します -key: 証明書要求を生成するときに使用する秘密鍵ファイル -out: 出力ファイル 3. CAルート証明書を生成する CA 証明書を生成するこのコマンドはわかりにくいです。1. 秘密鍵を使用して証明書要求ファイルを生成します。2. 証明書要求ファイルを使用して最終証明書を生成します。-in 証明書要求ファイルを使用して証明書を生成します。-signkey は秘密鍵を指定します。これはまだ理解していないパラメータです。[root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt 署名OK 件名=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/[email protected] 秘密鍵の取得 3. CA証明書に基づいてサーバー証明書を作成する1. サーバーの秘密鍵を生成する [root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048 RSA秘密鍵の生成、2048ビット長の係数 ...............................+++ ...............................+++ eは65537(0x10001) [root@ns3 鄭州]# ls local.crt local.csr local.key my_server.key 2. サーバー証明書要求を生成する [root@ns3 zhengshu]# openssl x509 -req -in local.csr -extensions v3_ca -signkey local.key -out local.crt 署名OK 件名=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/[email protected] 秘密鍵の取得 [root@ns3 zhengshu]# openssl genrsa -out my_server.key 2048 RSA秘密鍵の生成、2048ビット長の係数 ...............................+++ ...............................+++ eは65537(0x10001) [root@ns3 zhengshu]# openssl req -new -key my_server.key -out my_server.csr 組み込まれる情報を入力するよう求められます 証明書リクエストに追加します。 これから入力するのは、識別名または DN と呼ばれるものです。 フィールドはたくさんあるが、一部は空白のままにしておくこともできる いくつかのフィールドにはデフォルト値があります。 「.」を入力すると、フィールドは空白のままになります。 ----- 国名(2文字コード)[XX]:CN 州または県名(フルネーム)[]: BJ 地域名(例:市)[デフォルトの市]: BJ 組織名(例:会社)[Default Company Ltd]: 組織単位名(例:セクション) []:test 共通名(例:あなたの名前またはサーバーのホスト名)[]:test メールアドレス []:[email protected] 次の「追加」属性を入力してください 証明書のリクエストと一緒に送付されます チャレンジパスワード []:wuminyan オプションの会社名 []:wuminyan [root@ns3 鄭州]# ls local.crt local.csr local.key my_server.csr my_server.key 3. サーバー証明書を生成する [root@ns3 zhengshu]# openssl x509 -days 365 -req -in my_server.csr -extensions v3_req -CAkey local.key -CA local.crt -CAcreateserial -out my_server.crt 署名OK 件名=/C=CN/ST=BJ/L=BJ/O=Default Company Ltd/OU=test/CN=test/[email protected] CA秘密鍵の取得 4. SSLをサポートするようにnginxを設定する[root@ns3 ~]# vim /etc/nginx.cof #ソフトリンクはここに設定されます: lln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ サーバー{ 聞く 80; listen 443 default ssl; #ポート 433 をリッスンします keepalive_timeout 100; #キープアライブをオンにします クライアント要求の数を減らすためにキープアライブの長い接続を有効にします ssl_certificate /root/zhengshu/local.crt; #サーバー証明書の場所 ssl_certificate_key /root/zhengshu/local.key; #サーバー秘密鍵の場所 ssl_session_cache shared:SSL:10m; #キャッシュセッション ssl_session_timeout 10m; #セッションは 10 分で期限切れになります ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers をオン; サーバー名 test.com; 文字セット utf-8; 位置 / { ルートhtml; インデックス index.html index.htm; } } } 5. テストhttps://192.168.200.115 と入力します nginx と openssl を組み合わせて https を実装する方法についての記事はこれで終わりです。nginx で https を実装する方法についてさらに詳しく知りたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: MySQL マルチバージョン同時実行制御メカニズム (MVCC) ソースコードの詳細な説明
1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...
フォーム送信コード1. ソースコード分析 <!DOCTYPE html> <htm...
目次全体的な効果コンテナのスクロールイベントをリッスンするストア内の構成ページが戻るときのスクロール...
序文多くの Web アプリケーションは、リレーショナル データベース管理システム (RDBMS) に...
目次1. タスクキュー2. 混乱を招く問題を説明する1. setTimeout(f1,0)とは何です...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...
この記事では、タブバーの切り替えコンテンツバーを簡単に実現するためのJavaScriptの具体的なコ...
最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...
この記事は、Ubuntu 17.10 での Docker CE のインストールを記録するために使用さ...
矢印関数は ES6 の新機能です。独自の this はありません。その this ポイントは外部のコ...
自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...
目次1. 2つのモジュールの違い2. Node.jsとの違い3. CommonJSモジュールの読み込...
MySQL をクリーンアンインストールします。個人的にテストしたところ、今回はようやくうまくいきま...
シナリオ:テーブル内のデータは、同期ツールを使用して他のデータベースと同期する必要があり、増分同期に...