java.security
私の のファイルを見るとJRE
、デフォルトで使用するキーストア タイプが に設定されていることがわかりますJKS
。ここ使用できるキーストアの種類のリストがあります。
推奨されるキーストア タイプはありますか? さまざまなキーストア タイプの長所と短所は何ですか?
ベストアンサー1
リンクされている標準名リストに記載されているもの以外にも、いくつかの種類があります。暗号化プロバイダのドキュメント最も一般的なのは、JKS
(デフォルト) とPKCS12
(PKCS#12 ファイルの場合、拡張子が であることが多く.p12
、場合によっては.pfx
) です。
Java の世界では、JKS が最も一般的です。PKCS#12 は Java 固有のものではなく、ブラウザーからバックアップされた証明書 (秘密鍵付き) や OpenSSL ベースのツールから取得された証明書 ( keytool
Java 6 より前ではキーストアを変換して秘密鍵をインポートすることができなかったため、他のツールを使用する必要がありました) を使用するのに特に便利です。
すでに PKCS#12 ファイルがある場合は、そのPKCS12
タイプを直接使用する方が簡単な場合がよくあります。形式を変換することは可能ですが、キーストアのタイプを直接選択できる場合は、変換が必要になることはほとんどありません。
Java 7では、PKCS12
主にキーストアしかし、トラストストア(キーストアとトラストストアの違い) は、秘密鍵なしでは証明書エントリを保存できないためです。対照的に、 ではJKS
各エントリが秘密鍵エントリである必要がないため、証明書のみを含むエントリを持つことができます。これは、信頼する証明書のリストを保存する信頼ストア (ただし、それらの証明書の秘密鍵は持っていない) に便利です。
これはJava 8で変更され、PKCS12
ストアに証明書のみのエントリも持つことができるようになりました。(これらの変更と今後の計画の詳細については、JEP 229: デフォルトで PKCS12 キーストアを作成する。
他にも、あまり頻繁に使用されないキーストア タイプがいくつかあります (コンテキストによって異なります)。これには次のものが含まれます。
PKCS11
、PKCS#11 ライブラリ用で、通常はハードウェア暗号化トークンにアクセスするためのものですが、Sun プロバイダー実装ではこれを通じて NSS ストア (Mozilla 製) もサポートされます。BKS
BouncyCastle プロバイダー (Android でよく使用される) を使用します。Windows-MY
Windows-ROOT
Windows 証明書ストアに直接アクセスする場合は、/ を使用します。KeychainStore
OSX キーチェーンを直接使用したい場合。