以下代码在Heroku-18堆栈上运行良好
p12_file = File.read(uploaded_p12_file_path) pkcs12 = OpenSSL::PKCS12.new p12_file, password
但是,在升级到Heroku-22 Stack之后,相同的代码会引发以下错误:
PKCS12_parse: unsupported
用户可以通过网络上的输入表单上传带有密码的p12文件。
我们使用的是Ruby 3.1.2。奇怪的是,它在当地的开发机器上工作,而不是在Heroku上工作。有人有线索吗?任何帮助都是非常感谢的。
618夏日盛惠
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
我被同样的错误咬了一口。在PKCS12 3中对OpenSSL API进行了许多更新,其中包括对 遗留算法 的反对,这正是我们得到的结果。根据您的设置,如果您能够将您的证书转换为X509,您应该能够回到正轨上。第一件事是: p12证书在同一个文件中同时包含证书及其密钥。对于X509证书,它们需要是单独的文件。您可以使用以下命令导出它们:
# Export certificate openssl pkcs12 -legacy -in my_certificate.p12 -clcerts -nokeys -out my_certificate.pem # Export key openssl pkcs12 -legacy -in my_certificate.p12 -clcerts -nocerts -out my_certificate.key
我在 SSLContext 中使用它们,这是我添加私钥的地方:
SSLContext
OpenSSL::SSL::SSLContext.new.tap do |ctx|