【发布时间】:2016-08-06 17:31:25
【问题描述】:
如何创建使用以下公钥字符串初始化的OpenSSL::PKey 对象?最终目标是使用该对象使用 ruby-jwt 解码 JWT 令牌。
我尝试了以下方法:
public_key = ""-----BEGIN CERTIFICATE-----\n ...many characters... \n-----END CERTIFICATE-----\n" # I only have the public key
OpenSSL::PKey.read(key) # Gives ArgumentError: Could not parse PKey: no start line
OpenSSL::PKey.read(key.gsub("CERTIFICATE", "PUBLIC KEY")) # Gives ArgumentError: Could not parse PKey: ASN1 lib
最终目标是用它解码JWT:
# example from docs
require 'jwt'
rsa_public => OpenSSL::PKey.read(File.read(File.join(CERT_PATH, 'rsa-2048-public.pem')))
JWT.decode(token, rsa_public, true, { algorithm: "RS256", verify_iat: true })
对于使用公钥字符串初始化OpenSSL::PKey 有什么想法吗?
【问题讨论】:
-
你的
public_key开头有多余的引号吗? -
它不是公钥;它是一个 X.509 证书:
BEGIN CERTIFICATE。从证书中提取公钥并改用它。