Ssl 在启用FIPS的操作系统中从p12生成pem文件

Ssl 在启用FIPS的操作系统中从p12生成pem文件,ssl,openssl,ssl-certificate,fips,Ssl,Openssl,Ssl Certificate,Fips,我们的应用程序包括一个将p12转换为pem格式的脚本。操作系统已启用RHEL 7 FIPS,并且正在使用OpenSSL 1.0.2k-FIPS库。在此pem转换过程中,脚本失败,出现以下错误。尝试了RC2-40以外的一些算法,但仍然失败,尝试在openssl命令中传递正确的标志以使此pem转换成功,有何建议: 命令: openssl pkcs12 -in app1-serverpub.p12 -certpbe pbeWithSHA1And3-KeyTripleDES-CBC -keypbe pb

我们的应用程序包括一个将p12转换为pem格式的脚本。操作系统已启用RHEL 7 FIPS,并且正在使用OpenSSL 1.0.2k-FIPS库。在此pem转换过程中,脚本失败,出现以下错误。尝试了RC2-40以外的一些算法,但仍然失败,尝试在openssl命令中传递正确的标志以使此pem转换成功,有何建议:

命令:

openssl pkcs12 -in app1-serverpub.p12 -certpbe pbeWithSHA1And3-KeyTripleDES-CBC -keypbe pbeWithSHA1And3-KeyTripleDES-CBC -out ca-bundle.pem -passin pass:xxxx -info
MAC Iteration 100000  
MAC verified OK  
PKCS7 Encrypted data: `pbeWithSHA1And40BitRC2-CBC`, Iteration 50000  
Error outputting keys and certificates  
139990890305424:error:060740A0:digital envelope routines:EVP_PBE_CipherInit:unknown cipher:evp_pbe.c:181:  
139990890305424:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:p12_decr.c:87: 
139990890305424:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:139:
错误:

openssl pkcs12 -in app1-serverpub.p12 -certpbe pbeWithSHA1And3-KeyTripleDES-CBC -keypbe pbeWithSHA1And3-KeyTripleDES-CBC -out ca-bundle.pem -passin pass:xxxx -info
MAC Iteration 100000  
MAC verified OK  
PKCS7 Encrypted data: `pbeWithSHA1And40BitRC2-CBC`, Iteration 50000  
Error outputting keys and certificates  
139990890305424:error:060740A0:digital envelope routines:EVP_PBE_CipherInit:unknown cipher:evp_pbe.c:181:  
139990890305424:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:p12_decr.c:87: 
139990890305424:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:139:
========================================================================

根据各种建议尝试了以下命令,但仍无法覆盖此错误:

openssl pkcs12-in-app1-serverpub.p12-out ca-bundle.pem-passin-pass:xxxx-descert-info

PKCS7加密数据:
pbewithsha1和40bitrc2 CBC
,迭代50000次

  • 请建议正确的算法/正确的值来尝试certpbe、keypbe
  • openssl命令使用任何覆盖RC2-40的算法,该算法不是FIPS投诉

  • 谢谢。

    选项
    -certpbe-keybpe-descert
    仅在使用
    openssl pkcs12-export
    创建pkcs12文件(从PEM文件获取密钥和证书)时适用。在读取现有文件时,它们会被忽略、未实现、丢弃、无效且无用,就像您正在做的那样。现有p12文件的部分内容(称为“包”)使用加密完成时选择的算法进行加密,而您已经使用的算法(过去使用的算法)对文件进行了加密,显然包括用于证书包的RC2-40,这是非常常见和事实上的标准(以及不处于FIPS模式时openssl的默认设置)。您现在所做的任何事情都无法改变这一点,因为它发生在过去,时间只向前而不是向后

    取决于原因此系统在FIPS模式下使用,您可能能够获得在非FIPS模式下运行此特定操作的权限。我假设输出PEM文件将在此系统上使用,做出这些决定的人可能会要求privatekey输出符合FIPS,但这没关系,因为pkcs12pbe-using-SHA1的OpenSSL默认值-plus-3DES已获得批准

    或者,您必须让创建此文件的任何人或任何人使用经批准的算法,或者您必须在另一个不强制执行FIPS的系统上进行转换;在该系统上,您可以使用:

    openssl pkcs12 -in bad.p12 -passin whatever -nodes | openssl pkcs12 -export -descert -passout whatever -out good.p12
    

    这会将内容转换为PEM,并将其直接传输到一个进程,该进程将转换回新的、兼容的p12。使用
    -nodes
    可以避免为内部管道数据指定或输入冗余密码(至少两次),但如果您(或您的规则制定者)需要,您可以忽略该密码首选。

    选项
    -certpbe-keybpe-descert
    仅在使用
    openssl pkcs12-export
    创建pkcs12文件(从PEM文件中导出密钥和证书)时适用。在读取现有文件时,这些选项会被忽略、未实现、丢弃、无效且无用,就像您正在做的那样。现有p12文件有其部分内容(称为“包”)使用加密完成时选择的算法进行加密,并且您已经使用的算法(过去使用的算法)对文件进行加密,显然包括证书包的RC2-40,这是非常常见和事实上的标准(以及非FIPS模式下openssl的默认值).你现在所做的任何事情都不能改变这一点,因为它发生在过去,时间只会向前而不会向后

    取决于原因此系统在FIPS模式下使用,您可能能够获得在非FIPS模式下运行此特定操作的权限。我假设输出PEM文件将在此系统上使用,做出这些决定的人可能会要求privatekey输出符合FIPS,但这没关系,因为pkcs12pbe-using-SHA1的OpenSSL默认值-plus-3DES已获得批准

    或者,您必须让创建此文件的任何人或任何人使用经批准的算法,或者您必须在另一个不强制执行FIPS的系统上进行转换;在该系统上,您可以使用:

    openssl pkcs12 -in bad.p12 -passin whatever -nodes | openssl pkcs12 -export -descert -passout whatever -out good.p12
    

    这会将内容转换为PEM,并将其直接传输到一个进程,该进程将转换回新的、兼容的p12。使用
    -nodes
    可以避免为内部管道数据指定或输入冗余密码(至少两次),但如果您(或您的规则制定者)需要,您可以忽略该密码首选。

    我们在非fips操作系统中运行了该命令,它按预期工作。尝试跳过p12转换,并根据某人的评论使用此方法,效果良好。keytool-list-rfc-keystore“truststore.jks”-storepass${truststorePass}sed-e'/-BEGIN[A-Z]-*/,/-*END[A-Z]-*/!d'>ca-bundle.pemwe在非fips操作系统中运行了该命令,并按预期工作。尝试跳过p12转换,并根据某人的评论使用此方法,效果良好。keytool-list-rfc-keystore“truststore.jks”-storepass${truststorePass}sed-e'/-BEGIN[A-Z]-*/,/-*END[A-Z]-*/!d'>ca-bundle.pem