我正在为我的 Java Web 应用程序创建自签名证书。我的应用程序使用 Apache Tomcat 和 Apache HTTPD 代理。到目前为止,我一直在使用 OPENSSL 1.1.1 和 Java keytool 来进行自签名证书,并且它工作得很好。但现在我需要迁移到 OpenSSL 3.1.1 并且遇到问题。
第一步:创建密钥库
keytool -genkeypair -alias keystore -keyalg RSA -keystore C:\SSL\PVIStore -keysize 2048
第 2 步:将第 1 步中生成的密钥库导入到 .p12 文件中
keytool -importkeystore -srckeystore C:\SSL\PVIStore -destkeystore C:\SSL\PVIStore.p12 -deststoretype PKCS12
第3步:使用openssl 3.1.1从第2步生成的文件中获取.crt文件
openssl pkcs12 -in C:\PVIStore.p12 -nokeys -out C:\SSL\PVIStore.crt
第四步:使用 openssl 3.1.1 从步骤#2 中生成的文件中获取 .key 文件
openssl pkcs12 -in C:\SSL\PVIStore.p12 -nocerts -nodes -out C:\SSL\PVIStore.key
步骤 #3 和步骤 #4 在 openssl 1.1.x 中工作得很好,但与 openssl 3.1.1 一起使用时出现以下错误:-
输出密钥和证书时出错 94210000:错误:0308010C:数字信封例程:inner_evp_generic_fetch:不支持:crypto vp vp_fetch.c:341:全局默认库上下文,算法(RC2-40-CBC:0),属性()
注意:通过遵循另一个stackoverflow讨论,我找到了适合我的解决方法,但我不想使用旧版交换机继续前进。
非常感谢任何帮助。
将
-legacy
选项添加到 OpenSSL pkcs12
命令行。
请参阅手册页,上面写着:
当加载涉及 RC2-40-CBC 等旧版 PKCS#12 文件时遇到问题时,请尝试使用 -legacy 选项,如果需要,还可使用 -provider-path 选项。
https://www.openssl.org/docs/man3.1/man1/openssl-pkcs12.html