Nginx サーバーの https 設定方法の例

Nginx サーバーの https 設定方法の例

Linux: Linux バージョン 3.10.0-123.9.3.el7.x86_64

nginx: nginx/1.6.3

オープンSSL:1.0.1e

証明書を申請する

現在、インターネット上には、有効期間が数か月から数年に及ぶ無料の個人 SSL 証明書を提供している組織が数多く存在します。 StartSSL: https://www.startssl.com を例にとると、有効期間は申請が承認されてから 3 年間で、期限切れ後は無料で更新できます。

具体的な申請手続きも非常に簡単です。

登録してログインした後、「証明書ウィザード」>>「DV SSL 証明書」を選択して、無料の SSL 証明書を申請します。

電子メールでドメイン名を確認した後、自分のサーバーで SSL 証明書の CSR を生成します。入力したシークレットを覚えておいてください。これは後で必要になります。

openssl req -newkey rsa:2048 -keyout weizhimiao.cn.key -out weizhimiao.cn.csr

生成された証明書を/data/secret/などの指定されたディレクトリに配置します。証明書weizhimiao.csrの内容を確認し、その内容をページの証明書署名要求 (CSR) セクションにコピーして、ページを送信します。

生成された証明書をダウンロードし、対応する Web サーバー (Nginx、1_weizhimiao.cn_bundle.crt) を選択して、秘密キーと公開キーの両方を取得します。

  • 1_weizhimiao.cn_bundle.crt (公開鍵)
  • weizhimiao.cn.key (秘密鍵)

nginx の設定 (指定されたドメイン名に https を追加)

nginx.conf の現在の設定

...
http {
 ...
 /etc/nginx/conf.d/*.conf を含めます。

 サーバー{
  ...
 }
}

./conf.d/weizhimiao.cn.conf に追加

サーバ{
 443 ssl を聴く;
 サーバー名 weizhimiao.cn;

 ssl_certificate /data/secret/1_weizhimiao.cn_bundle.crt;
 ssl_certificate_key /data/secret/weizhimiao.cn.key;
 ssl_prefer_server_ciphers をオン;
 ssl_プロトコル TLSv1 TLSv1.1 TLSv1.2;

 ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED';

 add_header Strict-Transport-Security 'max-age=31536000; プリロード';
 add_header X-Frame-Options DENY;
 ssl_session_cache 共有:SSL:10m;
 ssl_session_timeout 10分;
 キープアライブタイムアウト70;
 ssl_dhparam /data/secret/dhparam.pem;

 add_header X-Content-Type-Options nosniff;

 add_header X-Xss-保護 1;

 ルート /data/www/weizhimiao.cn;
 インデックス index.html;

 位置 / {

 }
}

注記:

構成では、PEM 形式のキー ファイルであり、TLS セッションで使用される/data/secret/dhparam.pemファイルが使用されます。 SSL のセキュリティを強化するために使用されます。このファイルメソッドを生成すると、

cd /データ/シークレット/
openssl dhparam 2048 -out dhparam.pem

元のアクセスをポート 80 にリダイレクトします。 ./conf.d/weizhimiao.cn.conf に追加

サーバ{
 聞く 80;
 サーバー名 weizhimiao.cn;
 301 https://weizhimiao.cn$request_uri を返します。
}

テスト

設定ファイルに構文エラーがないか確認してください。公開鍵を生成するときに入力したパスワードを入力する必要があります。

nginx -t
PEM パスフレーズを入力してください:
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました

Nginx を再起動します (リロードは機能しないことに注意してください)

nginx -s 停止
PEM パスフレーズを入力してください:
nginx
PEM パスフレーズを入力してください:

ブラウザを使用してweizhimiao.cnにアクセスし、有効かどうかを確認します。

さらに、Nginx にセキュリティ証明書が設定されると、Nginx の再読み込み、停止、その他の操作ごとにパスワードを入力する必要があります。

復号化されたキー ファイルを生成して、元のキー ファイルを置き換えることができます。

cd /データ/シークレット/
openssl rsa -in weizhimiao.cn.key -out weizhimiao.cn.key.unsecure

weizhimiao.cn.conf内のweizhimiao.cn.keyファイルを置き換えます。

サーバー{
 ...
 ssl_certificate /data/secret/1_weizhimiao.cn_bundle.crt;
 ssl_certificate_key /data/secret/weizhimiao.cn.key.unsecure;
 ...
}

その後は、リロードするたびにパスワードを入力する必要はありません。

最後に、SSLLABS を使用してテストします。

結果

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装
  • nginx httpsリバースプロキシtomcatを実装する2つの方法
  • nginx サーバーの http を https にリダイレクトする正しい方法の詳細な説明
  • Nginx による https サーバー構築チュートリアル
  • Alibaba Cloud LINUXサーバーでのHTTPS(NGINX)設定の詳細な説明
  • Nginx で HTTPS サーバーを構築し、HTTPS アクセスを強制する方法
  • Windows で Nginx を使用して https サーバーとリバース プロキシを構成する際の問題

<<:  MySQL 接続数を設定する方法 (接続数が多すぎる)

>>:  アコーディオン効果を実現するJavaScript

推薦する

vue ルーティング ビュー router-view のネストされたジャンプの実装

目次1. app.vueページを修正する2. ログインページを作成する (/views/login/...

実行中のDockerコンテナのポートマッピングを変更する方法

序文docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ル...

ライフゲームの JavaScript 実装

目次コンセプト紹介論理的ルール完全なコード主な実装コンセプト紹介セルオートマトンとは、コンピュータの...

mysql 5.7.23 winx64 解凍バージョンのインストールチュートリアル

参考までに、mysql-5.7.23-winx64 解凍版の詳細なインストールチュートリアルです。具...

MySQL で datetime 型のデフォルト値を設定する方法

Navicat クライアントを通じてデフォルトの日時値を変更する際に問題が発生しました。データベース...

フロントエンドインタビューに必要なホモロジーとクロスドメインの詳細な説明

序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...

Linux仮想マシンをWiFiに接続する方法

生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...

nginx がアップストリーム アドレスにジャンプしない問題の解決方法

序文今日、nginx で非常に奇妙な問題に遭遇しました。フロントエンドの tomcat がページにジ...

ファイルの種類を検出するJavaScriptメソッド

目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...

角度に基づくツリー型セカンダリテーブルを実現する

まず効果を見てみましょう: コード: 1.html <div class="user...

MySQLの空の値とnull値の違いを知っていますか?

序文最近、友人がSQLを書くときにnull値を判定する方法が間違っていて、プログラム内のデータにエラ...

ウェブのさまざまなフロントエンド印刷方法: CSS はウェブページの印刷スタイルを制御します

CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...

VMware ESXi 5.5 の展開および構成図のプロセス

目次1. インストール要件2. OSイメージのダウンロード3. VMware Workstation...

JavaScript タイマーの詳細

目次1. 簡単な紹介2. 間隔を設定する2.1 説明2.2 パラメータ2.3 戻り値2.4 使用法3...