gpt4 book ai didi

ruby-on-rails - PKCS12.new file.p12, passphrase -> 将我们的 Rails 应用程序升级到 Heroku-22 Stack 后抛出 "PKCS12_parse: unsupported"错误

转载 作者:行者123 更新时间:2023-12-02 01:28:19 25 4
gpt4 key购买 nike

以下代码在 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 上运行。有人有线索吗?感谢您的帮助。

最佳答案

我刚遇到同样的错误。 OpenSSL 3 中对 PKCS12 API 进行了许多更新,其中弃用了 legacy algorithms。这就是我们的原因。根据您的设置,如果您能够将证书转换为 X509,您应该能够回到正轨。首先是:p12 证书在同一个文件中包含证书及其 key 。对于 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 中使用它们,这是我添加私钥的地方:

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

我希望您可以在您的应用中使用相同的概念。

关于ruby-on-rails - PKCS12.new file.p12, passphrase -> 将我们的 Rails 应用程序升级到 Heroku-22 Stack 后抛出 "PKCS12_parse: unsupported"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73894224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com