Windows-MYキーストアから証明書と秘密鍵を取得してファイルに書き込もうとしていますが、JavaではWindowsキーストアからファイルへの秘密鍵の書き込みが許可されていないという問題があります。
try {
KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
ks.load(null, null) ;
java.util.Enumeration en = ks.aliases() ;
while (en.hasMoreElements()) {
String aliasKey = (String)en.nextElement() ;
Certificate c = ks.getCertificate(aliasKey) ;
if (aliasKey.equals("myKey") ) {
PrivateKey key = (PrivateKey)ks.getKey(aliasKey, "monPassword".toCharArray());
Certificate[] chain = ks.getCertificateChain(aliasKey);
//write key on PEM file
wr1 = new FileWriter(directory.getPath() + "\\" + "key.pem");
PemWriter pWr = new PemWriter(wr1);
pemWr = new PEMWriter(wr1);
try {
pemWr.writeObject(key);
} catch (Exception e) {
e.printStackTrace();
}
pemWr.flush();
pemWr.close();
}
}
} catch (Exception ioe) {
System.err.println(ioe.getMessage());
}
ファイルにキーを書き込むときに例外があります。
org.bouncycastle.util.io.pem.PemGenerationException: unknown object passed - can't encode.
ある種のセキュリティ保護の対象となるのは、次のとおりです。
- key!= nullおよびkey.getAlgorithm()!= null
- key.getEncode()== nullおよびkey.getFormat()== null
- ファイルからキーを読み取り、それを別のファイルに書き込むと、コードは機能し、どのメソッドもnullを返しません。
ファイル.pemにキーを書き込むにはどうすればよいですか?ありがとうダニエレ