OpenSSL を使用して Windows で自己署名証明書を生成し、http を https にアップグレードする方法
序文
HTTPS は実際には HTTP over SSL です。つまり、HTTP 接続は SSL セキュア接続の上に確立されます。
自己署名証明書を作成するには、openssl がインストールされている必要があります。この記事の「OpenSSL のインストール」セクションを参照してください。
OpenSSL を使用して自己署名証明書を生成する手順: OpenSSL を使用して自己署名証明書を生成するには、この記事のセクションを参照してください。
- 秘密鍵 Key (.key ファイル) を作成します。
- 署名リクエスト (.csr ファイル) を作成します。
- キー内のパスワード。
- キー (.key+.csr=>.crt) を使用して証明書に署名します。
HTTPS 用に準備された証明書は、作成された署名リクエストの CN がドメイン名とまったく同じでなければならないことに注意する必要があります。そうしないと、ブラウザーの検証に合格できません。
記事ディレクトリ
CA 証明書と自己署名証明書の違いは何ですか?
CA 証明書と自己署名証明書はどちらも暗号化通信に使用されるデジタル証明書ですが、これらの間にはいくつかの重要な違いがあります。
-
CA 証明書は認知されたデジタル認証局 (CA) によって発行されますが、自己署名証明書はユーザー自身によって作成されます。CA は Certificate Authority の略で、「Certificate Authorization Center」とも呼ばれます。
-
CA 証明書は、当局によって信頼され、規制されているため、より安全です。自己署名証明書のセキュリティは、ユーザーのスキルとプロセスに依存します。
-
CA 証明書は多くのブラウザーやオペレーティング システムによってすでに信頼されているため、パブリック ネットワークや Web サイトで使用できます。自己署名証明書は、プライベート ネットワーク上またはテスト目的でのみ使用してください。
-
CA 証明書は有料ですが、自己署名証明書は無料です。
全体として、パブリック ネットワーク上で Web サイトまたはアプリケーションを実行する必要がある場合は、CA 証明書をお勧めします。プライベート ネットワーク上で通信またはテストを暗号化する必要があるだけの場合は、自己署名証明書を使用できます。
OpenSSL をインストールする
OpenSSL インストール パッケージをダウンロードする
https://slproweb.com/products/Win32OpenSSL.html に移動して、Win OpenSSL インストール パッケージをダウンロードします。
exe と msi のいずれかを選択できます。ライト バージョンは軽量バージョンであり、フル バージョンを直接ダウンロードすることに注意してください。
ダウンロードは Win64OpenSSL_Light-3_1_1.msi です。
インストール
ほとんどのインストール プロセスはデフォルトで選択できます。
OpenSSL DLL をWindows/System/
次のディレクトリまたはbin
インストール ディレクトリのディレクトリにインストールすることを選択する場合、bin
システム ディレクトリ内の他のソフトウェアの DLL が OpenSSL に影響を与えないようにディレクトリを選択することに注意してください。
他のページで「次へ」をクリックしてインストールを完了します。
最後に、このページでは著者に報酬を与えるかどうかを選択できます。報酬を与えたくない場合は、すべてのチェックを外してください。
インストールが完了しました。
環境変数を設定する
システム環境変数にパスを追加する必要もあります。私の場合はC:\Program Files\OpenSSL-Win64\bin
追加したら、右側にある上へ移動ボタンをクリックして上に移動します。
変更を保存するだけです。
インストールが正しいことを確認する
cmd を開き、コマンドを入力してバージョンを表示します。
openssl version
インストールが成功したことがわかります。インストールしたバージョン情報と異なる場合は、コンピューターの再起動が必要になる場合があります。
OpenSSL を使用して自己署名証明書を生成する
SSLフォルダーに移動します
生成された証明書ファイルを保存するための SSL フォルダーを作成します。私のはD:\ssl证书
cmd を開き、SSL フォルダー パスに移動し、コマンド openssl を入力して Enter キーを押します。
D:
cd D:\ssl证书
openssl
サーバー秘密キー (.key ファイル) を生成します。
次のコマンドを入力してキー ファイルを生成します。
openssl genrsa -des3 -out server.pass.key 2048
4桁以上のパスワードを入力し、再度パスワードを入力してください。図に示すように:
コマンドは次のように説明されます。
genra: RSA 秘密キーを生成します。
-des3: des3 アルゴリズムを使用します。
-out: 生成されたファイル名を指定します
。 2048: 秘密キーの長さを 2048 に設定します。
秘密キーからパスフレーズを削除する
openssl rsa -in server.pass.key -out server.key
rsa: RSA 秘密キーを生成する
-in: 入力秘密鍵ファイル
-out: 秘密鍵ファイルを出力します。
パスワードなし: パスワードなしで秘密鍵ファイルを設定します。
次に、server.pass.key のパスワードを入力します。図に示すように:
証明書署名要求 (.csr ファイル) の生成
次のコマンドを入力して、証明書署名リクエストを生成します。
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=OrganizeName/OU=UnitName/CN=192.168.0.174"
req: 証明書署名要求を生成します
-new: 新しく生成されました
-key: 秘密鍵ファイル
-out: 生成された CSR ファイルの名前を指定します
-subj: CSR 証明書を生成するためのパラメーター
subj パラメータの説明は次のとおりです。
分野 | フルネーム | 例 |
---|---|---|
/C= | 国 | CN |
/ST= | State or Province 州/省 | 浙江省 |
/L= | 場所または都市 都市 | 杭州 |
/O= | 組織 組織/企業 | 組織名 |
/OU= | 組織単位部門 | ユニット名 |
/CN= | コモンネームドメイン名またはIP | www.yourdomain.com または 192.168.xx |
自己署名SSL証明書(.crtファイル)を生成します。
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
-days: 証明書の有効期間
-req: 証明書が必要です
-in: 入力CSRファイル
-signkey: .key ファイルを指定します。
-out: crt ファイルを出力します。
フォルダー内には、server.pass.key、server.key、server.csr、server.crt の合計 4 つのファイルがあります。
このうち、nginxを設定する場合、server.keyとserver.crtの2つのファイルが必要になります。
この時点で、証明書の生成は完了です。
X.509 証明書には 3 つのファイルが含まれています: key、csr、crt
key はサーバー上の秘密鍵ファイルで、クライアントに送信されるデータの暗号化と、クライアントから受信したデータの復号化に使用されます。 csr は証明書署名要求ファイルです
。証明書に署名するために認証局 (CA) に提出するために使用されます。
crt は、認証局 (CA) によって署名された証明書、または開発者による自己署名証明書であり、証明書所有者の情報、所有者の公開キーが含まれています。 、署名者の署名およびその他の情報
備考: X.509 は、暗号化において、公開鍵認証、証明書失効リスト、認可証明書、証明書パス検証アルゴリズムなどを規定する標準です。
自己署名証明書の使用 (Nginx を例に挙げます)
サーバーからSSL証明書をアップロードします
Web サーバーは、server.crt
検証のためにデータをブラウザに送信し、それを使用してserver.key
ブラウザから送信されたデータを復号化する必要があります。(残りの 2 つのファイルserver.pass.key
と はserver.csr
不要になりました)。
サーバーはポート 443 を構成し、SSL 証明書を使用します。
Nginx を例として、%你的Nginx安装目录%/conf/nginx.conf
ポート 443 の監視を に追加します。
以下で構成する必要がありますserver{...}
:
server {
#监听443端口
listen 443 ssl;
server_name 127.0.0.1;
#ssl证书的crt文件路径
ssl_certificate D:\\SSLCertificate\\server.crt;
#ssl证书的key文件路径
ssl_certificate_key D:\\SSLCertificate\\server.key;
#反向代理
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:7001;
}
}
nginx.conf
変更が完了したら、次のコマンドを入力してリロードします。
D:
cd D:\Nginx
nginx -s reload
クライアントアクセスhttps
すべてがうまくいけば、ブラウザを開くと、HTTPS 経由で Web サイトにアクセスできます。図に示すように、最初のアクセス時に警告が表示されます (自己署名証明書がブラウザーによって信頼されていないため)。
方法 1: ブラウザーとオペレーティング システムに独自の認証局を強制的に受け入れる
1 つの方法は、[詳細設定] -> [192.168.xx (安全ではない) に進む] をクリックします。
ブラウザーとオペレーティング システムに独自の認証局を強制的に受け入れることができます。したがって、CA 証明書がインストールされ、信頼できるリストに追加されると、セキュリティ警告は表示されなくなります。
方法 2: ブラウザ/オペレーティング システムに認証局をインストールする
代替方法: CA 証明書を開発チームと共有して、開発チームのブラウザにインストールすることもできます。ブラウザを介して証明書をインポートし、「信頼できる」として設定すると、今後 Web サイトにアクセスするときにコンピュータが Web サーバーに安全に接続できるようになります。