nginx と openssl で https を実装する方法

nginx と openssl で https を実装する方法

サーバーデータが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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux に Nginx をインストールする方法 (pcre と openssl)
  • OpenSSL のセキュリティ脆弱性に対処するために Nginx サーバーを調整する方法
  • Nginxドメイン名転送のhttpsアクセスの実装
  • 複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装

<<:  インライン要素スパンの最小高さの定義

>>:  MySQL マルチバージョン同時実行制御メカニズム (MVCC) ソースコードの詳細な説明

推薦する

MySql でメモリ使用量を削減する方法の詳細な説明

序文デフォルトでは、MySQL はデータベース クエリ データをキャッシュするために大きなメモリ ブ...

ES6の新機能に関する最もよく使われる知識ポイントのまとめ

目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

vue-router からのフロントエンドルーティングの 2 つの実装

目次モードパラメータハッシュ履歴ハッシュ履歴.push()ハッシュ履歴.replace()アドレスバ...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

CentOS サーバーに FFmpeg をインストールするための完全な手順

序文サーバーシステム環境は、CentOS 6.5 (最終) です。 FFmpeg をサーバーに正常に...

ウェブ計算機を実装するためのjs

HTML、CSS、JS を使用してシンプルな Web 計算機を作成する方法は?コンピュータには次の...

CentOS 7のインストールと設定方法のグラフィックチュートリアル

この記事は、CentOS 7の詳細なインストールチュートリアルを参考のために記録します。具体的な内容...

SQLは、隣接する2行のデータに対して加算、減算、乗算、除算の演算を実行します。

SQL は、データを特定の順序で並べ替え、特定のフィールドでグループ化した後、隣接する 2 つのデ...

JavaScript でモバイル モーダル ボックスの効果を実現

この記事では、モバイルモーダルボックス効果を実現するためのJavaScriptの具体的なコードを参考...

Linux でディスク IO を表示し、読み取りと書き込みで高い IO を占有するプロセスを見つけます。

背景 - オンラインアラートオンライン サーバーがアラームを発し、ディスク使用率 disk.util...

ソースコード分析からTomcatがサーブレットの初期化を呼び出す方法の詳細な説明

目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...

JS関数のカリー化の詳細な説明

目次1. 補足知識ポイント: 関数の暗黙的な変換2. 補足知識: call/apply を使って配列...

Dockerでのpython3.8イメージのインストールについて

Docker Hub公式サイト1. Pythonミラーを検索するdocker 検索 python 2...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - ログポイントに基づくレプリケーション

ログポイントベースのレプリケーション1. マスターデータベースとスレーブデータベースに専用のレプリケ...