【问题标题】:Sign new certificates in Rails application在 Rails 应用程序中签署新证书
【发布时间】:2012-10-23 10:23:51
【问题描述】:

我有一个带有公共 REST API 的 Rails 应用程序,它使用 SSL 客户端证书对 API 客户端进行身份验证。

我希望该应用充当简单的 CA。 管理员用户应该能够访问站点上的页面并请求新证书。应用程序应该生成一个新的 SSL 证书,用应用程序的私钥签名,并以某种形式将其返回给管理员用户。

然后管理员用户将在客户端应用程序中安装此证书。然后,这些应用将能够使用新证书访问 REST API。

实现这一点的最简单方法是什么?我知道生成和签署新证书的唯一方法是使用openssl 命令行,在将openssl 配置为服务器上的CA(例如like this)之后。我是否需要这样做,并在 Rails 中使用反引号与openssl 通信?这看起来既繁琐又脆弱。

我应该如何将证书退还给管理员?我可以将它们作为文本文件传递出去以供下载。我见过 CA Web 界面允许用户从浏览器请求证书,然后将证书直接安装到浏览器中。然后管理员必须导出证书以将其传递给客户端脚本。

我认为 Rails 没有任何类型的“acts_as_CA”gem?

[请注意,我已经知道如何根据我的私钥对客户端请求进行身份验证。这个问题特别与颁发新证书有关。]

【问题讨论】:

    标签: ruby-on-rails certificate ca


    【解决方案1】:

    您可能想看看我们过去如何使用我们称为“证书库”的工具完成类似的事情。

    【讨论】:

      【解决方案2】:

      您可以使用 openssl gem 或 sshkey 生成密钥对。

      将证书作为文本文件或纯文本传递

      【讨论】:

        【解决方案3】:

        我现在有这个工作。 Ruby 中的 OpenSSL 库包含 CA 工作所需的所有方法,此处提供了清晰的示例:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL.html

        我不需要在服务器上设置 OpenSSL CA(如上面问题中的链接)——即使用命令行 openssl 作为 CA。在 Ruby 中使用它,您需要管理自己的 CA 证书存储、唯一序列号等。

        如果您希望客户端证书可直接下载到浏览器,请提供带有“.p12”文件扩展名的 PCKS12 捆绑包。 见http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/PKCS12.html 为“名称”参数使用一个友好的名称——这不会影响您的证书的 DN,但它可以很容易地在浏览器的选择密钥对话框中找到。 不要在 PKCS12 包中包含您的 CA 证书,Windows 会要求用户将您的 CA 安装为完全受信任的根 CA。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-10
          • 1970-01-01
          • 2017-02-17
          • 2020-01-12
          • 1970-01-01
          • 2018-11-30
          • 1970-01-01
          • 2016-09-06
          相关资源
          最近更新 更多