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

推薦する

Docker コンテナのマウントディレクトリ操作の表示

Dockerコンテナのマウントディレクトリ情報のみを表示する docker 検査 --format ...

Vueのデータ応答性原則の詳細な説明

この記事は主に、Vue のレスポンシブ ソース コードを理解していない、または触れたことがない人向け...

MySQL データベース内の varchar 型の数値のサイズを比較する方法

テストテーブルを作成する -- ---------------------------- -- ch...

js で下線とキャメルケースの変換を実装する (複数の方法)

目次適用シナリオ:方法 1: 正規表現 (推奨)方法2: 配列のreduceメソッドを使用する方法3...

Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

iノードとは何ですか? inode を理解するには、まずファイル ストレージから始める必要があります...

図を使ってWeb2.0とは何かを説明する

最近はWeb2.0という言葉をよく耳にしますが、Web2.0とは何でしょうか? Web 1.0 とど...

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下...

CSS で垂直方向の中央揃えを行う 7 つの方法の詳細なコード例

レイアウトを編集するとき、通常は水平センタリングと垂直センタリングを使用してデザインします。水平セン...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...

Tomcat イメージをインストールして Docker に Web プロジェクトをデプロイする方法を簡単に説明します。

1. Tomcatをインストールする1. Docker HubでTomcatイメージを見つける d...

CSS3+JS による虫眼鏡モードの完璧な実装の詳細説明

約 1 年前、私は「虫眼鏡効果を模倣するいくつかの方法の原理の分析」という記事を書きました。当時、自...

MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。

Tencent Cloud上に構築されたMySQLは、開発用コンピュータでNavicatを使用して...

Dockerイメージをプルしてバージョンを確認する方法

イメージのバージョンとタグを確認するには、docker hubで確認する必要があります。アドレスは次...

CentOS8 で MySQL 8.0 をインストールしてデプロイする方法

MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL ...