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 プロジェクトはファイルダウンロードの進行状況バー機能を実装します

推薦する

Vue カプセル化に基づくプルダウン更新およびプルアップ読み込みコンポーネント

VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...

Ubuntu 19でdockerソースをインストールできない問題を共有する

主要な Web サイトと個人的な習慣に従って、Docker ソースを追加するには次の方法を使用します...

MySQL 5.7 における基本的な JSON 操作ガイド

序文プロジェクトのニーズにより、ストレージ フィールドは JSON 形式で保存されます。プロジェクト...

Dockerでパラメータ変数を外部から指定する方法

この記事は主にDockerでパラメータ変数を外部から指定する方法を紹介します。この記事のサンプルコー...

必見の JavaScript 面接質問 10 選のまとめ (おすすめ)

1.これは1. 誰が誰に電話をかけますか?例: 関数foo(){ console.log(&quo...

ウェブサイト上で flv/MP4 やその他のビデオ ファイルを再生できない問題は、MIME タイプに関連しています。

ウェブサイトを作成している際に、flv や MP4 形式などのビデオ ファイルはローカルでは正常に再...

Mysql: 定義者として指定されたユーザー ('xxx@'%') が存在しません 解決策

本日のプロジェクト最適化中に、MySQL に問題が発生しました: 定義者として指定されたユーザー (...

Node.js ファイルのコピー、フォルダの作成、その他の関連操作

NodeJS は次のファイルをコピーします:通常、小さなファイルのコピー操作では、ストリーム パイプ...

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

js Promise同時制御メソッド

目次質問背景アイデアと実装質問次のように、同時実行 Promise の数を制御するメソッドを記述する...

JQuery データグリッドクエリの詳細な説明

目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....

Docker イメージのローカル Elasticsearch ポート操作へのアクセス

dockerスタックによってデプロイされたイメージサービスを使用すると、イメージを入力した後、理論的...

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat 1. Ngi...