【问题标题】:How to generate csr and crt files using openssl in ruby如何在 ruby​​ 中使用 openssl 生成 csr 和 crt 文件
【发布时间】:2018-04-14 04:18:31
【问题描述】:

所以我正在使用 AWS IoT 并在后端有一个运行 ruby​​ on rails 的服务器。我需要为客户端生成一些证书,AWS 网站上的示例仅提供了一种使用 openssl 命令行的方法。如果可能的话,我想使用 ruby​​ 中的开放 ssl 库来执行此操作,以避免在终端中执行 ruby​​ 运行命令,这可能会导致问题。
这些是我想使用 ruby​​ 复制的命令

openssl genrsa -out deviceCert.key 2048    

openssl req -new -key deviceCert.key -out deviceCert.csr    

openssl x509 -req -in deviceCert.csr -CA sampleCACertificate.pem -CAkey sampleCACertificate.key -CAcreateserial -out deviceCert.crt -days 99999 -sha256  

我发现并认为我可以做到的第一行

require 'openssl'    
rsa_key = OpenSSL::PKey::RSA.new(2048)    

但我被困在最后两行。有任何想法吗?

【问题讨论】:

    标签: ruby amazon-web-services ssl certificate


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      这是一个生成自签名证书的示例。

      require 'rubygems'
      require 'openssl'
      
      key = OpenSSL::PKey::RSA.new(1024)
      public_key = key.public_key
      
      subject = "/C=BE/O=Test/OU=Test/CN=Test"
      
      cert = OpenSSL::X509::Certificate.new
      cert.subject = cert.issuer = OpenSSL::X509::Name.parse(subject)
      cert.not_before = Time.now
      cert.not_after = Time.now + 365 * 24 * 60 * 60
      cert.public_key = public_key
      cert.serial = 0x0
      cert.version = 2
      
      ef = OpenSSL::X509::ExtensionFactory.new
      ef.subject_certificate = cert
      ef.issuer_certificate = cert
      cert.extensions = [
        ef.create_extension("basicConstraints","CA:TRUE", true),
        ef.create_extension("subjectKeyIdentifier", "hash"),
        # ef.create_extension("keyUsage", "cRLSign,keyCertSign", true),
      ]
      cert.add_extension ef.create_extension("authorityKeyIdentifier",
                                             "keyid:always,issuer:always")
      
      cert.sign key, OpenSSL::Digest::SHA1.new
      
      puts cert.to_pem
      

      Source for Example

      【讨论】:

      • 我认为这不是我想要的。在我的示例中,我使用自己的证书颁发机构对其进行签名。但在你的例子中,我没有看到任何地方我会这样做
      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2017-08-27
      相关资源
      最近更新 更多