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> の違いの分析

推薦する

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

Linux環境変数ファイルの簡単な紹介

Linux システムでは、環境変数は適用範囲に応じて、システムレベルの環境変数とユーザーレベルの環境...

VMware Workstation 15 Pro インストール ガイド (初心者向け)

01. VMware Workstation Pro 15 のダウンロードダウンロード: VMwa...

div が contentEditable=true に設定されている場合、コンテンツをリセットした後にカーソルを配置することはできません。

最近、絵文字にコメントする機能が必要なコメント機能に取り組んでいたため、 contentEditab...

MySQL データをエクスポートおよびインポートするための HeidiSQL ツール

場合によっては、SQL へのデータのエクスポートとインポートを容易にするために、特定のツールを使用し...

Centos7 での MySQL のインストールに関するチュートリアル

最近、自宅サーバーにクラウドディスクを導入する予定なので、一連の環境構築作業を始めました。MySQL...

Vueでスワイパープラグインを使用する際の問題を解決する

デモを作成するときにこのプラグインを使用していくつか問題が発生したため、プラグインの使用方法といくつ...

HTML でフォーム入力やその他のテキスト ボックスを読み取り専用にして編集不可にする方法

場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

MySQL DDLステートメントの使用

序文SQL の言語分類には主に以下の種類があります。 DDLデータ定義言語作成、削除、変更データ定義...

Vueは動的クエリルール生成コンポーネントを実装します

1. 動的クエリルール動的クエリルールは、おおよそ次の図のようになります。ユーザのカスタマイズに応じ...

MySQL シリーズ 7 MySQL ストレージ エンジン

1. MyISAM ストレージエンジン欠点:トランザクションはサポートされていません最小粒度ロック:...

ウェブデザインのためのロイヤルブルーのカラーマッチング入門

古典的な色の組み合わせは力と権威を伝え、強いロイヤルブルーはあらゆる古典的な色の組み合わせの中心的な...

CentOS 8 に MySql をインストールしてリモート接続を許可する方法

ダウンロードしてインストールします。まず、システムに MySQL または MariaDB があるかど...

Nodejs エラー処理プロセス記録

この記事では、接続エラー ECONNREFUSED を例に、Node.js がエラーを処理するプロセ...