【问题标题】:storing .pem and .key files as strings in database将 .pem 和 .key 文件作为字符串存储在数据库中
【发布时间】:2021-05-25 20:44:41
【问题描述】:

我试图允许用户在我的 rails 数据库中存储 .pem 和 .key 文件文本字符串,但是当我尝试使用 OpenSSL::X509::Certificate.new 和 OpenSSL::PKey::RSA 读取它们时。新的,我收到以下错误:OpenSSL::X509::CertificateError:nested asn1 错误。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails ssl pem


    【解决方案1】:

    使用pem key,您可以使用这种简单的方式:

    # Create pem key
    pkey = OpenSSL::PKey::RSA.new 2048
    # Save key
    s = pkey.to_s
    # Read key by load text key content to s variable, then:
    pkey = OpenSSL::PKey::RSA.new(s)
    

    但是对于X.509 key,你必须填写一些额外的信息才能保存:

    # Create X.509 key
    xkey = OpenSSL::X509::Certificate.new
    # Fill some fields
    xkey.version = 2
    xkey.serial = 0
    xkey.not_before = Time.now
    xkey.not_after = Time.now + 3600
    xkey.public_key = key.public_key
    xkey.sign key, OpenSSL::Digest::SHA1.new
    # Save key
    s = xkey.to_s
    # Read key by load text key content to s variable, then:
    xkey = OpenSSL::X509::Certificate.new(s)
    

    所有错误都会从你的代码中消失:D

    【讨论】:

    • 谢谢你,虽然我有一个问题。我将密钥作为字符串存储在环境变量中,直到我将.to_s 添加到我的环境变量OpenSSL::PKey::RSA.new(ENV["EXAMPLE"].to_s) 中,我才能让它工作。你知道这是为什么吗?
    • 我不确定 ENV 变量类型,但 to_s 以确保它是字符串变量!
    猜你喜欢
    • 2011-12-19
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多