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