私はそれを理解したように見えるので、私自身の質問に答える。
最初に、ルートCAと中間CAを作成する必要があります。前述のように私はthisチュートリアルに従った。非常に良いですが、強調すべきことがいくつかあります。
ルートを作成openssl.cnf
あなたroot/ca
フォルダの場所にディレクトリを設定してください。これは指示に明記されていますが、強調表示するのは良いことです。また、ルートCAを実行したときにそれらの準備が整うように、デフォルト(81〜86行目)も変更してください。あなたの中間openssl.cnf
root/ca/intermediate
にディレクトリを変更し、デフォルト設定のデフォルト値を変更(行81-86)ルートopenssl.cnf
のものと一致することを作成する場合
ルート証明書を作成
は良いコモンネームに
- を選びました。
また、openssl.cnfの一部として、thisリンクごとにsubjectAltNameを追加する必要があります。 usr_cert
およびserver_cert
の下に、subjectAltName = @alt_names
を加えます。これにより、証明書を作成するときに必要なサブジェクト代替名が追加されます。私はあなたが本当にserver_cert
のためにこれを必要と信じていますが、私はちょうど(私はuser_cert
とにかく使用していない)安全のために両方の下に追加しました。 DNS.1
はlocalhostに正しく設定されています。
中間証明書を作成する場合、詳細はルート証明書のものと同じにする必要があります。したがって、手順3で組織の詳細をコピーする必要があります。共通名は異なる必要があります。
組織の詳細を作成する際には、非常に注意して共通名をlocalhost
に設定することがあります。
バージョンを(データの下で)3に設定されている署名されたサーバ証明書のチェックを確認
は、被写体CNはlocalhost
に設定され、X509v3 Subject Alternative Name
がDNS:localhost
に設定されています。
あなたは、あなたがあなたのSringブートアプリケーションに提供するために、トラスト・ストアを作成する必要が行われます。私はthisのリソースを使いました。私は私がPKCS12は、新しい標準と春ですのでJKSに変換する気にしませんでした
openssl pkcs12 -export -inkey ./intermediate/private/localhost.key.pem -in cert-chain.txt -out cert-chain.p12
次のコマンドを使用して
cat ./intermediate/certs/localhost.cert.pem ./intermediate/certs/intermediate.cert.pem ./certs/ca.cert.pem > cert-chain.txt
は、その後、私は私の店を作成し、次のコマンドを使用して、私の証明書チェーンを作成しましたブートはこのフォーマットでうまく動作します。
次に、KeyStore Explorerを使用して、キーストアに正しい階層があるかどうかを確認しました。それは1つの証明書(localhost)を持っていました。私が証明書の階層を見ると、私はroot - > intermediate - > localhostを見ました。
次の事は私がsrc/main/resources
下キーストアを入れたんでしたし、あなたがかもしれない春のセキュリティを使用している場合、私は私のYAMLのプロパティ内の次のプロパティファイル(通常の.propertiesファイルでも動作します)
server.port: 8443
server.ssl:
key-store: src/main/resources/cert-chain.p12
key-store-password: secretpassword
keyStoreType: PKCS12
を追加しましたまた、security.require-ssl: true
を使用する必要があります。
この時点ではERR_CERT_AUTHORITY_INVALID
と表示されますが、とにかく進むことができます。これは、ルート/中間CAがブラウザによって信頼されていないためです。ブラウザーで証明書を見ると、root - > intermediate - > localhost階層が再び表示されます。中間証明書をブラウザにインポートし、ブラウザを再起動します。緑の安全な南京錠が現れます。成功!あなたは今安全です!
注:時々、私はActive content with certificate errors
エラーを見ました。この場合、hereのようにサイトストレージを削除してください。
私は、このリソースのおかげでserver_cert拡張機能に拡張機能を追加することで、サブジェクト代替名の問題を解決することができました(https://alexanderzeitler.com/articles/Fixing-Chrome-missing_subjectAltName-selfsigned-cert-openssl/) –