将PKCS#8二进制密钥加载到Ruby中
发布时间:2020-12-17 04:32:49 所属栏目:百科 来源:网络整理
导读:我正在尝试将以二进制DER格式(PKCS#8)编码的特定私钥加载到 Ruby中. 但是,OpenSSL :: PKey无法识别它.我可以通过做一些控制台工作并将其转换为像这样的PEM来使其工作: openssl pkcs8 -inform DER -in file.key -passin pass:xxxxxxxx private_key.pem 在此
我正在尝试将以二进制DER格式(PKCS#8)编码的特定私钥加载到
Ruby中.
但是,OpenSSL :: PKey无法识别它.我可以通过做一些控制台工作并将其转换为像这样的PEM来使其工作: openssl pkcs8 -inform DER -in file.key -passin pass:xxxxxxxx >private_key.pem 在此之后,可以正确读取密钥. 但是,因为我希望整个过程在内存中完成,而不是写入和读取文件. 所以我的问题是:是否可以将二进制编码的DER格式的私钥加载到Ruby / OpenSSL中? 感谢您的时间, 费尔南多 解决方法
是的,您可以使用Ruby OpenSSL间接加载PKCS#8 DER编码的私钥.
OpenSSL :: PKey :: RSA.new只处理PEM格式的PKCS#8,但很容易读取二进制DER并将其转换为PEM格式的字符串,然后从字符串加载. 例如,使用这些DER编码的私钥: $openssl genrsa | openssl pkcs8 -topk8 -outform DER -nocrypt -out pkcs8.key $openssl genrsa | openssl pkcs8 -topk8 -outform DER -v2 des3 -passout pass:secret -out pkcs8_des3.key 你可以这样做: require 'openssl' require 'base64' def box(tag,lines) lines.unshift "-----BEGIN #{tag}-----" lines.push "-----END #{tag}-----" lines.join("n") end def der_to_pem(tag,der) box tag,Base64.strict_encode64(der).scan(/.{1,64}/) end pem = der_to_pem('PRIVATE KEY',File.read('pkcs8.key')) key = OpenSSL::PKey::RSA.new(pem) pem2 = der_to_pem('ENCRYPTED PRIVATE KEY',File.read('pkcs8_des3.key')) key2 = OpenSSL::PKey::RSA.new(pem2,'secret') 读取DER字节,Base64它们并将PEM标记放在顶部和底部,然后加载密钥. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |