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

推薦する

Reactプロジェクトの新規作成からデプロイまでの実装例

新しいプロジェクトを始めるこの記事では主に、新規プロジェクトを0から1まで取り組むプロセスを記録し、...

JavaScript WebAPI、DOM、イベント、操作要素例の詳しい説明

目次ウェブAPI DOM DOMツリーDOM要素取得方法ドキュメントオブジェクトのプロパティイベント...

Docker コンテナでネットワーク リクエストが遅くなる問題の解決策

Docker の使用中に、いくつかの問題が発見されました。npm install や bundle ...

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

CSS3を使用してヘッダーアニメーション効果を作成する

Netease Kanyouxi公式サイト(http://kanyouxi.163.com/)(棚...

LinuxサーバーにVueプロジェクトをデプロイする

ケース1 vue-cliはvue3プロジェクトをビルドし、プロジェクトをLinuxサーバーにアップロ...

CSS3 弾性拡張ボックスの詳細な説明

使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...

CSS3はウェブサイトの製品表示効果図を実現します

この記事では、CSS3 を使用した Web サイトの商品表示の効果を紹介し、皆さんと共有します。詳細...

Dockerのインストール、イメージの作成、NodeJSプログラムの読み込みと実行の詳細なプロセス

システム環境: Windows 7 1. DockerをインストールするDocker公式サイトからd...

Dockerは複数のポートマッピングコマンドを有効にします

次のように: docker run -d -p 5000:23 -p 5001:22 --name ...

WEB 標準ウェブページ構造

背景画像でも、ページ上のテキストサイズでも、1 ピクセルの違いは非常に明白です。そして、私は学生時代...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

データ構造 - ツリー (III): 多方向検索ツリー B ツリー、B+ ツリー

多方向探索ツリー完全二分木の高さ: O(log2N)、ここで2は対数完全なM方向探索木の高さ: O(...

HTMLエリアタグの詳しい説明

<area> タグは、イメージ マップ内の領域を定義します (注: イメージ マップはク...

Dockerを使用してコンテナリソースを制限する方法

覗き見の問題サーバーでは、IIS サービスが複数のサイトを展開していると仮定すると、サイトの 1 つ...