我试图将Java JCEKS密钥库转换为包含两个对称密钥的PKCS12,一个AES和一个3DES。
AES密钥可以很好地导入PKCS12文件,但不能导入3DES密钥。
我使用的命令是:
"c:\Program Files\Java\jdk-10.0.1\bin\keytool.exe" -importkeystore -srckeystore D:\temp\ssc.jceks -srcstoretype jceks -destkeystore D:\temp\ssc.p12 -deststoretype pkcs12
我收到以下错误消息:
java.security.KeyStoreException: Key protection algorithm not found: java.security.NoSuchAlgorithmException: unrecognized algorithm name: DESede
这是Java 10.0.1,我也尝试过Java 8u171和Java 11 EA 17。
Keytool可以使用以下命令列出JCEKS密钥库:
"c:\Program Files\Java\jdk-10.0.1\bin\keytool.exe" -list -keystore D:\temp\ssc.jceks -storepass xxxxx -storetype jceks -v
如何将3DES密钥导入PKCS12密钥库?
感谢。
答案 0 :(得分:2)
看起来实现SunJSSE
KeyStore的默认PKCS12
提供程序不支持DESede
算法。
最好的办法是将它们放在JCEKS
密钥库中(它是Java专有的,但PKCS#11标准是不存储非私钥。即使你必须这样做,DESede可能不会得到支持,因为AES被认为比DESede更安全,并且是行业标准。)