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

推薦する

WeChatアプレットに2048ミニゲームを実装する詳細なプロセス

レンダリング サンプルコード今日は、WeChat アプレットを使用して 2048 ゲームを実装します...

And キーワードを使用した MySQL の複数条件クエリ ステートメント

AND キーワードを使用した MySQL 複数条件クエリ。MySQL では、AND キーワードを使用...

Docker tomcatのメモリサイズを設定する方法

Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場...

Nginx でバージョン番号を隠したり偽造したりする方法

1. デフォルトでアクセスするには、curl コマンドを使用します。 # curl -I http:...

Linuxネットワーク構成ツールの使用

この記事では、RHEL8 のネットワーク サービスとネットワーク構成ツール、およびネットワーク ファ...

CSS リセットスタイルリセットの実装例

はじめに: すべてのブラウザには、「ユーザー エージェント スタイル シート」と呼ばれる、すべてのペ...

Expressを使用してプロジェクトを自動的にビルドするNode.jsのプロセス全体

1. Expressライブラリとジェネレータをインストールするcmdを開いて、次のコマンドを入力しま...

Vue は左右のスライド効果のサンプルコードを実装します

序文個人の実際の開発で使用した効果問題を、今後の開発やレビューに役立てるためにまとめています。他の人...

IE6のバグと修正は予防戦略です

元記事:究極の IE6 チートシート: 25 以上の Internet Explorer 6 のバグ...

nginxで静的リソースを公開する方法

ステップ準備した静的リソースファイルを指定されたフォルダに配置しますnginx 設定ファイルを変更す...

Vue 画像切り抜きコンポーネントのサンプルコード

例:ヒント:このコンポーネントはvue-cropperの二次パッケージに基づいていますプラグインをイ...

IDEA が Docker を統合してリモート展開を実現するための詳細な手順

1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...

calc() で全画面背景の固定幅コンテンツを実現

ここ数年、Web デザインには「全幅背景と固定幅コンテンツ」というトレンドが生まれています。このデザ...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...

JS の精度外数値問題の解決

精度の問題に対する最もわかりやすい説明たとえば、1÷3=0.33333333...という数字は、3が...