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) ソースコードの詳細な説明

推薦する

Harborを使用してプライベートDockerリポジトリを構築する方法

目次1. オープンソースの倉庫管理ツール Harbor 2 インストール2.1 DockerとDoc...

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

webpackが静的リソースキャッシュを実装する方法

目次導入複数の異なるハッシュを区別するハッシュチャンクハッシュコンテンツハッシュjs キャッシュの実...

インストールされていないバージョンの MySQL を使用する手順とパスワードを忘れた場合の解決策

最初のステップは、圧縮されたパッケージを対応するディスクに解凍することです。 2 番目の手順は、cm...

MySQL 結合テーブルと ID 自動増分の例の分析

結合の書き方左結合を使用する場合、左側のテーブルが必ず駆動テーブルになりますか? 2 つのテーブルの...

Vue スキャフォールディング プロジェクトを作成するための詳細な手順

vue スキャフォールディング -> vue.cli大規模で完全に機能する Vue プロジェク...

Vue プロジェクトで Baidu Map API を使用する方法

目次1. Baidu Map Open Platformにアカウントを登録してログインする2. 必要...

CSS の Display、Visibility、Opacity、rgba、z-index: -1 の違い

ウェブページ上のいくつかの要素の非表示、透明、その他のプロパティを制御する必要があることがよくありま...

MySQL スローログ実践のまとめ

遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

ウェブページのアクセス速度に関する主な問題と解決策

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

HTML 適応テーブル方式

<body style="scroll:no"> <テーブルの...

CSS3 を使用したテキスト折り紙効果のサンプルコード

序文この記事では主に、CSS3 を使用してテキスト折り紙効果を実現する例を紹介します。これは、参考と...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...