Nginx で HTTPS 証明書を構成する詳細なプロセス

Nginx で HTTPS 証明書を構成する詳細なプロセス

1. HttpとHttpsの違い

HTTP: インターネットで最も広く使用されているネットワーク プロトコルです。クライアントとサーバーの要求と応答 (TCP) の標準です。WWW サーバーからローカル ブラウザーにハイパーテキストを転送するために使用される転送プロトコルです。ブラウザーの効率を高め、ネットワーク転送を削減できます。

HTTPS: セキュリティを目的とした HTTP チャネルです。簡単に言えば、HTTP のセキュア バージョンであり、HTTP の下に SSL レイヤーが追加されています。HTTPS のセキュリティの基礎は SSL であるため、暗号化された詳細には SSL が必要です。 HTTPS プロトコルの主な機能は、情報セキュリティ チャネルを確立してデータ転送のセキュリティを確保することと、Web サイトの信頼性を確認することの 2 つに分けられます。

HTTPS と HTTP の主な違いは次のとおりです。

1. https プロトコルでは、CA に証明書を申請する必要があります。一般的に、無料の証明書は少ないため、一定の料金が必要です。

2. HTTP はハイパーテキスト転送プロトコルであり、情報はプレーンテキストで送信されますが、HTTPS は安全な SSL 暗号化転送プロトコルです。

3. http と https は完全に異なる接続方法と異なるポートを使用します。前者は 80 で、後者は 443 です。

4. http 接続は非常にシンプルでステートレスです。HTTPS プロトコルは、SSL+HTTP プロトコルによって構築されたネットワーク プロトコルで、暗号化された送信と ID 認証を実行できます。http プロトコルよりも安全です。

2. opensslを使用して証明書を生成する

OpenSSL は最も人気のある SSL 暗号化ライブラリ ツールであり、SSL/TLS プロトコルの実装をサポートする汎用的で堅牢なフル機能のツール スイートを提供します。

たとえば、/usr/local/ssl に生成されます。

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt

生成プロセス:

# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
2048ビットのRSA秘密鍵を生成する
...............................................................................+ ++
...............+++
新しい秘密鍵を '/usr/local/ssl/nginx.key' に書き込みます
-----
組み込まれる情報を入力するよう求められます
証明書リクエストに追加します。
これから入力するのは、識別名または DN と呼ばれるものです。
フィールドはたくさんあるが、一部は空白のままにしておくこともできる
いくつかのフィールドにはデフォルト値があります。
「.」を入力すると、フィールドは空白のままになります。
-----
国名(2文字コード)[XX]:CN
州または県名(フルネーム) []:北京
地域名(例:都市)[デフォルトの都市]:北京
組織名(例:会社)[Default Company Ltd]:xxxx
組織単位名(例:セクション)[]:xxxx
共通名(例:あなたの名前またはサーバーのホスト名)[]:xxxx(通常はドメイン名)
メールアドレス[]:[email protected]
#ll
合計 8
-rw-r--r--。1 ルート ルート 1391 4月 21 13:29 nginx.crt
-rw-r--r--。1 ルート ルート 1704 4月 21 13:29 nginx.key

3. Nginxにhttp_ssl_moduleモジュールをインストールする

Nginx で SSL モジュールが有効になっていない場合、Https の設定時にエラー メッセージが表示されます。

nginx: [emerg] 「ssl」パラメータには、/usr/local/nginx/conf/nginx.conf:xxx の ngx_http_ssl_module が必要です

Nginx には http_ssl_module モジュールがありません。コンパイルおよびインストール時に --with-http_ssl_module 設定を追加するだけです。

このシナリオでは、サーバーに nginx はインストールされていますが、http_ssl_module はインストールされていません。

1. 次のようなソース パッケージを入力します。

cd /app/download/nginx-1.12.2

2. 設定:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

#依存パッケージが必要になる場合があります yum -y install pcre-devel openssl openssl-devel

3.作る:

作る

4. make install を実行する必要はありません。そうしないと、インストールが上書きされます。

5. 次のように元の nginx をバックアップします。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

6. 次に、元の nginx を新しくコンパイルした nginx で上書きします (nginx を停止する必要があります)

cp ./objs/nginx /usr/local/nginx/sbin/

7. インストールステータスを確認します。

nginx の sbin ディレクトリに nginx の sbin ディレクトリを作成します。
nginx バージョン: nginx/1.12.2
gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) で構築
OpenSSL 1.0.2k-fips で構築 2017年1月26日
TLS SNIサポートが有効
設定引数: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

4. nginx 設定 https

いくつかの設定情報を貼り付けます:

 サーバー{

    聞く 80;
		サーバー名 www.yourdomain.com;
	  ^(.*) https://$server_name$1 permanent を書き換えます。#http を https にリダイレクトします
  }
サーバー{
	443 ssl を聴く;
	サーバー名 www.yourdomain.com;
	ssl_certificate /usr/local/ssl/nginx.crt;
	ssl_certificate_key /usr/local/ssl/nginx.key;
	ssl_session_cache 共有:SSL:1m;
	ssl_session_timeout 5分;
	# ハッカーがバージョンの脆弱性を悪用するのを防ぐために、ヘッダー内のサーバーバージョンを無効にします server_tokens off;
	#サイト全体が HTTPS であり、HTTP が考慮されていない場合は、HSTS を追加して、サイト全体が暗号化されていることをブラウザに通知し、HTTPS アクセスを強制することができます。fastcgi_param HTTPS on;
	fastcgi_param HTTP_SCHEME https;
	アクセスログ /usr/local/nginx/logs/httpsaccess.log;
}

まず、設定が正しいかどうかを確認します。

nginx の sbin ディレクトリに nginx の sbin ディレクトリを作成します。
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf の構文は正常です
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストが成功しました

nginxを再起動します。

/usr/local/nginx/sbin/nginx -s リロード

アクセス:

Nginx で HTTPS 証明書を構成する詳細なプロセスに関するこの記事はこれで終わりです。Nginx で HTTPS 証明書を構成することに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • https暗号化アクセス用にnginxを設定するための詳細なチュートリアル
  • Alibaba Cloud Nginx はドメイン名アクセス プロジェクトを実装するために https を設定します (グラフィック チュートリアル)
  • Nginx設定の原理と実装プロセスの詳細な説明https
  • Nginxはhttpとhttpsの両方のアクセスをサポートするために同じドメイン名を設定します
  • HttpとHttpsの両方をサポートするNginxの詳細な設定
  • Nginx http ヘルスチェック構成プロセス分析
  • nginx で SSL 証明書を設定して https サービスを実装する方法
  • Nginx での Frp による https への強制リダイレクト設定の詳細な説明
  • Docker に nginx をインストールし、https 経由でアクセスを構成する方法
  • Nginx の構成と HTTP 実装コード分析との互換性

<<:  MySQL インデックスのパフォーマンス最適化の問題に対する解決策

>>:  Vue プロジェクトはファイルダウンロードの進行状況バー機能を実装します

推薦する

HTML におけるメタの役割について (インターネットから収集および分類)

W3Cschoolではこのように説明しています<meta> 要素は、検索エンジン向けの説...

MySQL のインデックスにおける NULL の影響についての詳細な説明

序文私は多くのブログを読み、弊社の DBA を含む多くの人々が、MySql では列に null が含...

CSV、Excel、SQL ファイルを MySQL にインポートするためのヒント

1. csvファイルをインポートする次のコマンドを使用します。 1.mysql> infile...

MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

MySQL 8.0.18 では、インデックスが作成されていないフィールドに適用でき、等価値の関連付け...

IE のテキストモード! DOCTYPE の役割の紹介

前の記事で説明したフォームの自動入力の問題を解決した後、新しい問題が発生しました。ページの一部のスタ...

Docker+Selenium Grid に基づく技術アプリケーションをテストするためのサンプル コード

Selenium Grid の紹介Selenium Grid のいくつかの新しい機能は、今後リリース...

GoのDockerデプロイメント用の基本イメージ2つの実装

1. golang:最新のベースイメージ mkdir gotest タッチメイン.go Docker...

シングルサインオン制御を実装するためのVueの完全なコード

参考までに、Vue シングル サインオンのデモをご紹介します。詳細を知りたい方のお役に立てれば幸いで...

MySQLのデフォルトのソートルールに基づく落とし穴

MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...

Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案

スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...

CSS で overflow-y: visible; が機能しない理由の分析と解決

シナリオ最近の要件は、モバイル デバイス用の h5 ページです。これには、選択可能なカードの行が必要...

Reactのref属性を深く理解する方法

目次概要1. Refsオブジェクトの作成1.1 React.createRef() 1.2React...

Docker イメージを Docker Hub にプッシュする実装

イメージが正常にビルドされると、Docker 環境があれば使用できますが、イメージを Docker ...

無視されたDOCTYPE記述の分析

doctype もその 1 つです。 <!DOCTYPE HTML PUBLIC "...

Mac に MySQL データベースをインストールし、環境変数を設定するためのグラフィック チュートリアル

目次MySQLをインストールする環境変数の設定MySQLをインストールするmysqlをダウンロードし...