nginxとIISで使用できるSSL証明書を作成する

nginxとIISで使用できるSSL証明書を作成する

証明書を作るのが面倒だと思うなら、この記事で作った証明書はこちらです:https://pan.baidu.com/s/1MJ5YmuZiLBnf-DfNR_6D7A(抽出コード:c6tj)、パスワードは:123456

証明書をダウンロードし、次のテキストの nginx と IIS の使用手順に従って使用できます。

SSL証明書の作成

さて、まず空のディレクトリを作成し、この空のディレクトリで作成を始めましょう。

1. 秘密鍵を生成する

秘密鍵を生成するには、次のコマンドを実行します。

    sudo openssl genrsa -des3 -out デモキー 1024
    # openssl genrsa コマンドは、公開鍵ではなく RSA 秘密鍵を生成するために使用されます。公開鍵は秘密鍵から抽出されるためです。# -des3 は、秘密鍵ファイルの暗号化に使用するアルゴリズムを指定します。暗号化アルゴリズムを指定する必要はありません (独自のテストでは暗号化アルゴリズムを指定しないことをお勧めします)。オプション: -des|-des3|-idea
  # -out demo.key 生成された秘密鍵を指定されたファイルに保存します # 1024 生成する秘密鍵の長さ (ビット単位) を指定します。デフォルトは 1024 です。通常は 1024 または 2048 です。

生成プロセス中に、パスワードの入力を求められます。ここではテストして、直接入力しました: 123456

注意: 上記で生成した demo.key では -des3 暗号化アルゴリズムパラメータが使用されているため、デプロイ後に再起動が必要な場合、nginx -s reload を使用する際など、確認のためにパスワードの入力を求められることがあり、自分でテストする際には非常に面倒です。

解決策は2つあります。

a. パスワードを生成して削除する

たとえば、上記では demo.key という名前の秘密鍵ファイルが生成されています。以下のコマンドを実行すると、これをリセットできます。

    sudo openssl rsa -in demo.key -out temp.key && sudo rm demo.key && sudo mv temp.key demo.key

b. 秘密鍵を生成するときに-des3パラメータを指定しないでください。

たとえば、上記の demo.key を生成するコマンドは次のように変更されます。

    sudo openssl genrsa -out デモキー 1024

2. 証明書要求ファイルを生成する

次のコマンドを実行して証明書要求ファイルを生成します。

    sudo openssl req -new -key demo.key -out demo.csr
    # openssl req コマンドの主な機能は、証明書要求ファイルの生成、証明書要求ファイルの表示と検証、および自己署名証明書の生成です。 # -new 説明 証明書要求ファイルを生成します。 # -key demo.key 既存のキー ファイルを指定してキー要求を生成します。これは、証明書要求生成オプション -new でのみ使用されます。
  # -out demo.csrは生成された証明書要求または自己署名証明書の名前を指定します

コマンドを実行すると、証明書情報の入力を求められます。詳細については、以下の図を参照してください。

3. CRT証明書ファイルを生成する

証明書ファイルを生成するには、次のコマンドを実行します。

    sudo openssl x509 -req -days 36500 -in demo.csr -signkey demo.key -out demo.crt
    # openssl x509 コマンドは主に、証明書情報の出力、証明書要求ファイルの署名、自己署名証明書の生成、証明書形式の変換などに使用されます。# -req は、次の入力が証明書要求ファイルであることを示します。# -days 36500 証明書の有効期間は日数です (100 年後にお会いしましょう)
  # -in demo.csr は入力ファイルを指定します# -signkey demo.key 署名証明書キー# -out demo.crt は証明書の出力ファイルを指定します

次のようなプロンプトが表示された場合、生成は成功したことを意味します。

4. pfx証明書インストールパッケージを生成する

インストール パッケージ ファイルを生成するには、次のコマンドを実行します。

    sudo openssl pkcs12 -export -inkey demo.key -in demo.crt -out demo.pfx
    # openssl pkcs12 コマンドは、pkcs12 ファイルを生成および分析するために使用されます。 # -export は、PKCS#12 ファイルが作成されることを指定します。 # -inkey demo.key は、秘密鍵ファイルの場所を指定します。指定しない場合は、-in ファイル名で秘密鍵を指定する必要があります # -in demo.crt は秘密鍵と証明書が読み取られるファイルを指定します # -out demo.pfx は出力 pkcs12 ファイルを指定します

コマンドを実行した後、パスワードを入力します。ここでは同じパスワードを入力します: 123456

この時点で、証明書は完成し、4 つのファイルが取得されます。

    demo.crt: CRT 証明書ファイル。nginx を構成するときに使用できます。demo.csr: CRT 証明書要求ファイル。現在は基本的に役に立ちません。demo.key: 秘密鍵。nginx を構成するときに使用できます。demo.pfx: 証明書インストール パッケージ。iis を展開するときに使用できます。

証明書を使用したNginxの設定

nginx 設定ファイルを作成します。

  サーバー{
        4430 ssl を聴く;
        リッスン [::]:4430 ssl;

        sslオン;
        ssl_certificate /home/feng/ssl/demo.crt; #crt 証明書ファイル ssl_certificate_key /home/feng/ssl/demo.key; #秘密鍵ファイル ssl_session_timeout 5m;
        ssl_プロトコル SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers をオン;

        ルート /var/www/html;
        インデックス index.html index.htm index.nginx-debian.html;

        サーバー名_;

        位置 / {
                try_files $uri $uri/ =404;
        }
  }

ここでは、区別するためにデフォルトのポート443ではなく、ポート4430を使用していることに注意してください。

次に、nginx -t を使用して検証し、nginx -s reload を使用してリロードします。次に、ブラウザを使用して 4430 にアクセスします。アクセス可能ですが、リスクがあるというメッセージが表示されます。結局のところ、証明書は次のように自分で作成します。

「詳細設定」をクリック => リスクを受け入れます。

証明書を使用した IIS 構成

IIS 構成証明書には pfx 証明書インストール パッケージ (demo.pfx) が必要です。ここでは IIS7 を例に説明します。

IIS を開き、ホームページで [サーバー証明書] をクリックします。

右側の [インポート] をクリックし、作成した pfx 証明書ファイルを選択し、ファイル作成時に入力したパスワードを入力します (上記の手順 4 で pfx ファイルを作成するときに入力したパスワード、ここでは 123456)。

次に、https リクエスト タイプを追加する Web サイトを選択し、右側の操作で [バインド] をクリックして、以下の手順に従います。

次にサイトを再起動し、指定されたポートでhttpsリクエストを使用します。

注意: コンピュータに VMware などのツールがインストールされている場合、ポート 443 は次のようなエラー メッセージで始まることがあります: 別のプログラムがこのファイルを使用しているため、プロセスはこのファイルにアクセスできません。ソリューションリファレンス: https://www.jb51.net/article/109375.htm

プログラムで使用される証明書

場合によっては、プログラム内で証明書を使用する必要があることもあります。たとえば、Grpc を使用する場合、デフォルトで https を使用しますが、単に https リクエストを使用したいだけの場合は、.net core で自作の証明書を使用して https リクエスト プロジェクトを生成するなど、プログラム内で証明書を使用して操作する必要があります。

.net core Web プロジェクトを作成し、上記で作成した demo.pfx を使用して、Program.cs を変更します。

    公開クラスプログラム
    {

        パブリック静的 void Main(文字列[] 引数)
        {
            CreateHostBuilder(args).Build().Run();
        }

        パブリック静的 IHostBuilder CreateHostBuilder(文字列[] 引数) =>
            Host.CreateDefaultBuilder(引数)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureKestrel(オプション =>
                    {
                        オプション.ListenAnyIP(5000, listenOptions =>
                        {
                            listenOptions.UseHttps(@"C:\inetpub\wwwroot\demo.pfx", "123456");
                        });
                    });
                    webBuilder.UseStartup<スタートアップ>();
                });
    }

起動後、httpsを使用してアクセスをリクエストできます

以上がnginxやIISで使えるSSL証明書の作成内容です。SSL証明書の作成についての詳細は、123WORDPRESS.COM内の他の関連記事もぜひご注目ください!

以下もご興味があるかもしれません:
  • SSL を実装するために nginx を設定する方法の例
  • docker に基づいて nginxssl 設定を開始する
  • Nginx SSL証明書設定エラーの解決策
  • Nginx ドメイン名 SSL 証明書の構成 (Web サイトの http を https にアップグレード)
  • Nginx ロードバランシング/SSL 構成の実装
  • nginx で SSL 証明書を設定して https サービスを実装する方法
  • SSL で Nginx リバース プロキシを構成する簡単な手順
  • Centos7.x での Nginx のインストール、SSL 設定、一般的なコマンドの詳細な説明
  • Nginx+SSL による双方向認証を実装するためのサンプル コード
  • nginx ssl を設定して https アクセスを実装する手順 (初心者向け)

<<:  MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)

>>:  太字の <b> と <strong> の違いの分析

推薦する

SpringBoot プロジェクトの Docker 環境を実行するときに発生する無限再起動問題の詳細な説明

もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、こ...

Windows Server 2016 AD サーバーをセットアップする手順 (画像とテキスト)

導入: AD は Active Directory の略称で、中国語では Active Direct...

win10 64 ビット システムに複数の JDK バージョンをインストールする際の切り替え問題と解決策の概要

コンピューターにmyeclipse2017とidea2017がインストールされているため、ideaが...

Linux で crontab 出力リダイレクトが有効にならない問題の解決方法

質問LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

js キャンバスはスライダー検証を実現します

この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...

Javascript における分割代入構文の詳細な説明

序文ES6 で初めて導入された「構造化代入構文」を使用すると、配列やオブジェクトの値を異なる変数に挿...

Centos7 システムに k8s クラスターを展開するための詳細な紹介

目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...

モバイル開発におけるHTML5開発の現状を深く理解する

「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...

一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...

Vueページの初回読み込み最適化の全プロセス

目次序文1. 画像の最適化2. .mapファイルの生成を無効にする3. ルーティングの遅延読み込み4...

ページを更新せずにフォームを送信するには iframe を使用します

そこで、この問題を解決するために埋め込みフレームワークを導入します。具体的な原則は、フォームがデータ...

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

CSS はコンテナ レベル (div...) タグを 1 つの位置 (ページの右端) に固定します。

コードは次のようになります。 。プロセス{ 境界線:1px 実線 #B7B7B8; 背景:#F8F8...

Vue でスクロールバーのスタイルを変更する方法

目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...