Openssl无法以Fips模式从pkcs12密钥库中提取私钥

时间:2019-01-14 14:24:01

标签: java openssl ssl-certificate private-key keytool

在从RHEL6升级到RHEL7的过程中,我继承了一些PKI脚本,并且我们似乎在OpenSSL和Java的Keytool方面遇到了一些问题。我绝不是PKI专家,并且已经从研究此问题开始摸索PKI的表面。

我们使用keytools genkeypair生成了一个JKS

keytool -genkeypair -alias $ALIAS -keyalg RSA -keysize 2048 -keystore $keystore.jks -storepass $pass -keypass $pass -dname "{$dname}" -ext san=${san}

,然后将该JKS转换为PKCS12密钥库。

keytool -importkeystore -srckeystore $keystore.jks -destkeystore $p12keystore -srcstoretype JKS -deststoretype PKCS12 -srcstorepass $pass -deststorepass $pass -srcalias $ALIAS destalias $ALIAS -srckeypass $pass -destkeypass $pass -noprompt

然后我们尝试提取私钥并将其存储在PEM文件中。

openssl pkcs12 -in $p12keystore -nocerts -out $key.pem  -passin $pass -passout $pass -nomacver

当我们在系统上禁用FIPS时,操作成功完成,没有问题。启用FIPS时,我们会收到错误消息

error:060740A0:digital envelope routines:EVP_PBE_CipherInit:unknown cipher: evp_pbe.c:181

进行一些挖掘,我发现启用了fips时,我们的keytool不会改变其构造PKCS12密钥库的方式,我认为这是引起问题的原因。当我使用openssl检查密钥库时,在密钥库中显示PCKS7数据后,我收到类似的错误

PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 50000
Error outputing keys and certificates
error:060740A0:digital envelope routines:EVP_PBE_CipherInit:unknown cipher: evp_pbe.c:181

我认为该算法不符合FIPS,这会导致OpenSSL错误,因为在fips模式下,它会禁用此密码,并且无法解释证书,因此无法进入私钥来提取证书。

我感觉我正在使用Java的非Fips兼容版本(openjdk 1.8.0._171-b19),或者缺少一些加密扩展,我需要使我的Java FIPS兼容RHEL7。

我遇到了一些以前的问题,这些问题说使用-descert选项作为使用3DES来获取密钥的解决方法,但是并没有改变结果。您可能遇到任何想法或类似问题吗?

0 个答案:

没有答案