首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新的file.p12,密码库->在将我们的rails应用程序升级到Heroku-22 Stack后抛出"PKCS12_parse: unsupported“错误

新的file.p12,密码库->在将我们的rails应用程序升级到Heroku-22 Stack后抛出"PKCS12_parse: unsupported“错误
EN

Stack Overflow用户
提问于 2022-09-29 10:44:57
回答 1查看 123关注 0票数 1

以下代码在Heroku-18堆栈上运行良好

代码语言:javascript
运行
复制
p12_file = File.read(uploaded_p12_file_path)
pkcs12 = OpenSSL::PKCS12.new p12_file, password

但是,在升级到Heroku-22 Stack之后,相同的代码会引发以下错误:

代码语言:javascript
运行
复制
PKCS12_parse: unsupported

用户可以通过网络上的输入表单上传带有密码的p12文件。

我们使用的是Ruby 3.1.2。奇怪的是,它在当地的开发机器上工作,而不是在Heroku上工作。有人有线索吗?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2022-09-30 12:37:45

我被同样的错误咬了一口。在PKCS12 3中对OpenSSL API进行了许多更新,其中包括对遗留算法的反对,这正是我们得到的结果。根据您的设置,如果您能够将您的证书转换为X509,您应该能够回到正轨上。第一件事是: p12证书在同一个文件中同时包含证书及其密钥。对于X509证书,它们需要是单独的文件。您可以使用以下命令导出它们:

代码语言:javascript
运行
复制
# 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中使用它们,这是我添加私钥的地方:

代码语言:javascript
运行
复制
OpenSSL::SSL::SSLContext.new.tap do |ctx|
  ctx.add_certificate(
    OpenSSL::X509::Certificate.new(File.read("my_certificate.pem")),
    OpenSSL::PKey::RSA.new(File.read("my_certificate.key"), @cert_password),
    [@root_cert]
  )
end

我希望你能在你的应用程序中使用相同的概念。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73894224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档