ローカルホストにSSLを実装する正しい方法


10

ChromeとMozillaで受け入れられる、localhostに実装する自己署名証明書を生成する最新の方法を誰かが提案できますか?

私はopenssl世代を試してみましたが、Mozillaは発行者が信頼できないと文句を言っています。

Centos 7、nginx


Let's Encryptを使用します。
トーマス

2
ローカルドメイン
です。Let

2
サイトに移動し、[詳細設定]をクリックして、[例外の追加]をクリックします。
リチャードスミス

1
安全に見えるようにしたい場合は、自己署名CAが必要であり、それを使用してサーバーの証明書に署名します。その後、CAをブラウザーのトラストストアに追加できます。
Richard Smith

1
Firefoxが自己署名証明書の受け入れを停止したようです。@RichardSmithが言うように、証明書を生成するには認証局を使用する必要があります。その地雷原に飛び込む前に、あなた自身の当局を運営することのセキュリティへの影響を研究する必要があるかもしれません。
garethTheRed 2017

回答:


9

警告:自分の認証局を運営するという地雷原に飛び込む前に、セキュリティへの影響を調査する必要があるかもしれません!

ただし、必要な場合は、https://localhost/警告メッセージなしですばやく簡単なCAを読んでください...

次のテキストファイルを作成します。

# OpenSSL configuration for Root CA

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name
x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = Test Root CA

[ x509_ext ]

basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign

名前を付けて保存し、root.cnf次のコマンドでリクエストを生成します。

$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf

これにより、ルートCA証明書(root.cer)とルートCA秘密鍵(root.key)が作成されます。これらは秘密にしておく必要があります。秘密鍵のパスワードの入力を求められます-強力なパスワードを選択してください。

次に、サーバー証明書の構成ファイルを作成します。

# OpenSSL configuration for end-entity cert

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name

x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = localhost

[ x509_ext ]

keyUsage=critical,digitalSignature,keyAgreement

subjectAltName = @alt_names

# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com

名前を付けて保存しserver.cnf、次のコマンドでリクエストを生成します。

openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf

上記は、server.key保護する必要がある別の秘密鍵()を生成します。この場合、キーはパスワードで保護されていませんが、-nodesオプションを削除してパスワードを追加できます。

最後に、server.cnfファイルの新しいルートCAと拡張子を使用してリクエストに署名します(便宜上)。

$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext

注:-set_serialオプションには任意の乱数を選択してください。

ルートCAの生成時に入力したパスワードを要求されます。

サーバー証明書(server.cer)が生成されます。

次に、ルートCA証明書(root.cer)をFirefoxのトラストアンカーストアに追加し、次のコマンドでテストを実行します。

$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www

注:サーバーがすでにポート443で実行されている場合、エラーが発生する可能性があります。その場合は、実行中のサーバーを停止するか、上記のポート番号を別の未使用のポートに変更します。

あなたがnaviateときhttps://localhost(またはhttps://localhost:<port>Firefoxであなたは上記のポート番号を変更した場合)、あなたは今、何の警告を参照してくださいてはならないとOpenSSLのインストールが提供できる暗号のリストを提示されます。

結果に満足したら、server.keyおよびserver.cerをWebサーバーに追加し、それに応じて構成します。


1
タイプミスがあります。stinguished_nameあるべきdistinguished_name
user281357
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.