JavaアプリケーションのSunPKCS#11プロバイダーとしてNetwork Security Servicesを使用していますが、望ましくない動作が発生しています。
同じ信頼できる証明書をキーストアに再挿入すると、証明書が最初に挿入されたときに正常に設定された信頼属性が削除されます。
問題の本質を示すための不完全なコードを次に示します。
Provider p = new SunPKCS11(pkcs11ConFile);
Security.addProvider(p);
KeyStore keystore = KeyStore.getInstance("PKCS11");
keystore.load(null, pwd);
pkcs11Keystore.setCertificateEntry(alias, cert);
//at this point, when I use certutil.exe to list the keystore certificate I can see
//the certificate listed with attributes "CT,C,C" for SSL,S/MIME,JAR/XPI respectively.
keystore.deleteEntry(alias);
keystore.setCertificateEntry(alias, cert);
//now when I run the same certutil.exe command I see empty trust attributes i.e. ",,".
同じキーストア(および証明書)をリロードすることはできますが、SSL認証は問題なく機能しますが、アプリを再起動してキーストアを再度リロードすると、信頼できるエイリアスのリストで証明書を使用できなくなります。
アプリを再起動したときだけうまくいかない理由も私には謎です。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6298106に関連していると思われるものを読みましたが、100%適用されていないようで、作成するnssの内部がわかりません。それの完全な感覚。
誰かがこの振る舞いを理解していますか?
ありがとう、マイク