ホームページ  >  記事  >  運用・保守  >  ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

王林
王林転載
2023-05-21 18:10:062232ブラウズ

背景:

WeChat アプレットはプロジェクト開発で使用されますが、サーバー構成 URL は https である必要があるため、nginx の ssl モジュールは https アクセスをサポートするように構成する必要があります。つまり dmsdbj.com というドメイン名で Web サイトを作成するには、https://dmsdbj.com 経由でアクセスする必要があります。

ssl は英語で Secure Sockets Layer と呼ばれます。 SSL は、SSL プロトコルを使用してブラウザと Web サーバーの間に安全なチャネルを確立するデジタル証明書です。データ情報はクライアントとサーバーの間で安全に送信されます。

前提条件:

1 . SSL モジュールを設定するには、まず CA 証明書が必要です。CA 証明書は手動で発行することも、Alibaba Cloud で申請することもできます。私は Alibaba Cloud で証明書を申請しました。 (手動発行については記事下部のリンクをご参照ください)

2. ssl モジュールはデフォルトではインストールされていませんので、このモジュールを使用したい場合は、-with- を指定する必要があります。 nginx をコンパイルするときの http_ssl_module パラメータ。

Alibaba Cloud の ca 証明書の購入

操作手順:

1. ca 証明書をダウンロードします

1. Alibaba Cloud にログインし、「コンソール」-「製品とサービス」を選択し、「セキュリティ (クラウド シールド)」欄の「ca 証明書サービス (データ セキュリティ)」を選択します。

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

2. 購入した証明書の「ダウンロード」をクリックし、新しく開いたページで「nginx/tengine」を選択します。 nginx の証明書をダウンロードします。」

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

2. nginx 設定ファイルに証明書をインストールします

ファイルの説明: 1 . 証明書ファイル "証明書名.pem" には、コンテンツの 2 つのセクションが含まれています。コンテンツを削除しないでください。 2. 証明書システムによって作成された CSR の場合は、以下も含まれます。 証明書の秘密キー ファイル "証明書名.pem"。 (1) nginx設定ファイルがあるディレクトリにcertフォルダを作成し、ダウンロードしたファイルをすべてcertディレクトリにコピーします。証明書申請時にcsrファイルを自分で作成する場合は、対応するcsrファイルを入れてください。秘密キー ファイルを cert ディレクトリに作成し、その名前を「証明書名.key」にします;

(2) nginx インストール ディレクトリの conf ディレクトリにある nginx.conf ファイルを開き、次を見つけます:

# https server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols sslv2 sslv3 tlsv1;
# ssl_ciphers all:!adh:!export56:rc4+rsa:+high:+medium:+low:+sslv2:+exp;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

(3) これを次のように変更します (次の属性 ssl で始まる属性は証明書の構成に直接関連しています。実際の状況に基づいて他の属性をコピーまたは調整してください):

server {
  listen 443;
  server_name localhost;
  ssl on;
  root html;
  index index.html index.htm;
  ssl_certificate  cert/证书名称.pem;
  ssl_certificate_key cert/证书名称.key;
  ssl_session_timeout 5m;
  ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4;
  ssl_protocols tlsv1 tlsv1.1 tlsv1.2;
  ssl_prefer_server_ciphers on;
  location / {
    root html;
    index index.html index.htm;
  }
}

保存して終了します。

(4) nginx を再起動します。

nginx -s reload

(5) https 経由でサイトにアクセスし、サイト証明書のインストールと構成をテストします。ブラウザに https://dmsdbj.com と入力します。以下の図に示すように、構成が成功したことを示しています。

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

インストール プロセス中に発生した問題

エラー1:

nginx: [emerg ] /usr/local/nginx/conf/nginx.conf の不明なディレクティブ "ssl":151

解決策:

このエラーは 2 つの状況によって発生する可能性があります。

ケース 1: 構成ファイルの形式が正しくありません。

解決策の参照リンク:

ケース 2: ssl モジュールがインストールされていません

デフォルトの状況 ssl モジュールがインストールされていません。このモジュールを使用したい場合は、nginx のコンパイル時に --with-http_ssl_module パラメータを指定する必要があります。この状況でもエラーが発生します2.

解決策:

nginx には http_ssl_module モジュールがありません。コンパイルしてインストールするときは、 --with-http_ssl_module 構成を持ってくるだけですが、現在の状況では、nginx はすでにインストールされています。モジュールを追加する方法は実際には非常に簡単です。続きを読んでください: 注: 私の nginx インストール ディレクトリは /usr/local/nginx ディレクトリであり、ソース コード パッケージは /usr/local/src/nginx-1.3.6 ディレクトリにあります。

(1) ソース コード パッケージに切り替えます:

cd /root/nginx-1.13.6

(2) 設定情報:

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

(3) 設定が完了したら、make を実行してコンパイルします。 make install を実行しないでください。実行しないと、インストールが上書きされます。

mark

(4) 次に、元のインストール済み nginx をバックアップします。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

(5) nginx を停止します。通常のコマンド nginx -s stop

nginx -s stop

を使用します。 off そうでない場合は、プロセスを直接強制終了します。 ps aux | grep プロセス名を実行すると、プロセスが占有している PID 番号が表示されます。

ps aux|grep nginx

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

検出された pid を kill するだけです。kill -9 pid コマンドを使用してプロセスを終了します。次の 3 つのEveryone PID を続行する前に、まず root に対応する PID を強制終了する必要があります。

kill -9 10922
kill -9 28276
kill -9 28277
kill -9 28278

(6) 元の nginx をコンパイルしたばかりの nginx

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

(7) で開始します nginx

nginx

(8) 次のコマンドを使用して、すでに参加しているかどうかを確認します成功しました。

nginx -v

エラー 2:

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

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

# #解決策:

この状況の解決策については、エラー 1 の 2 番目の状況の解決策を参照してください。

エラー 3:

nginx を停止しています... nginx: [emerg] bio_new_file("/usr/local/nginx/conf/cert/214291778530222. pem") が失敗しました (ssl: エラー:02001002:システム ライブラリ:fopen:そのようなファイルまたはディレクトリはありません:fopen('/usr/local/nginx/conf/cert/214291778530222.pem','r') エラー:2006d080:bioルーチン:bio_new_file:そのようなファイルはありません) が失敗しました。強制終了を使用してください

ssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法

解決策:

証明書のパスが保存されていないことが原因である可能性があります正しい場所に 正しく発生しており、絶対パスを記述していればWindows、Linux問わずエラーが報告されます。

証明書ファイルを nginx.conf が存在するディレクトリに置きます。

以上がssl モジュールを使用して HTTPS アクセスをサポートするように nginx を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。