Bra*_*ayn 2 encryption openssl ruby-on-rails
我正在开发一个需要电子支付模块的RoR网站.电子支付实现要求使用由它们提供的公共ssl密钥对xml数据进行编码.
我在Ruby中尝试做的事情:
public_key = OpenSSL::PKey::RSA.new(File.read(public_key_file))
Run Code Online (Sandbox Code Playgroud)
如果我只是尝试单独打开文件,它工作正常.但RSA.new()方法返回以下错误:
OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error
from (irb):5:in `initialize'
from (irb):5:in `new'
from (irb):5
Run Code Online (Sandbox Code Playgroud)
从我在在线文档中看到的,使用.pem文件但我的公钥类似于public.cer.这可能是问题吗?在e-payment公司提供的PHP示例中,密钥本身似乎没问题,同样的public.cer文件工作正常.
我究竟做错了什么?
谢谢,
.cer文件很可能是在DER中编码的X.509证书.不幸的是,Ruby没有公开OpenSSL接口来读取DER中的证书.所以你需要先将DER转换为PEM.这在Ruby中相当容易,
b64 = Base64.encode64(File::read(cert_file))
pem = "-----BEGIN CERTIFICATE-----\n#{b64}-----END CERTIFICATE-----\n"
cert = OpenSSL::X509::Certificate.new(pem)
public_key = cert.public_key
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6892 次 |
| 最近记录: |