localhostでSSLを実装する正しい方法

localhostでSSLを実装する正しい方法

ChromeとMozillaで許可されているローカルホストで自己署名証明書を生成する現代的な方法を提案できる人はいますか?

opensslを構築しようとしましたが、Mozillaは出版社を信頼できないと文句を言いました。

セントース7、nginx

答え1

警告:自己認証機関を運営する地雷原に飛び込む前に、セキュリティへの影響を調査したい場合があります。

しかし、必ずしなければならない場合は、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

root.cerこれにより、秘密にする必要があるルートCA証明書()とルート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オプションを削除してパスワードを追加できます。

最後に、便宜上、新しいルートCAとファイルの拡張子を使用して要求に署名しますserver.cnf

$ 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サーバー証明書()が生成されます。

root.cer次に、ブラウザが新しいCAを信頼するように、ルートCA証明書()をFirefoxの信頼アンカーストアに追加します。

OpenSSL を一時 Web サーバーとして使用してテストを実行します。

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

注:すでにポート443で実行されているサーバーがある場合は、エラーが発生する可能性があります。この場合は、実行中のサーバーを停止するか、上記のポート番号の末尾を(たとえば)に変更して、使用していない他のポートに変更してください。-accept 8443 -www

Firefoxを使用してナビゲートしている場合https://localhost(またはhttps://localhost:8443上記でポート番号を変更した場合)、OpenSSLインストールで提供できる警告とパスワードのリストが表示されなくなりました。

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

関連情報