-->

登录Rails应用程序的新证书(Sign new certificates in Rails app

2019-08-01 18:59发布

我有一个公共REST API,其验证使用SSL客户端证书API客户端的Rails应用程序。

我想应用程序作为一个简单的CA. 管理员用户应当能够在网站上浏览的网页,并申请新的证书。 该应用程序应生成新的SSL证书,与应用程序的私钥签名,并以某种形式返回它来管理用户。

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

什么是实现这一点的最简单的方法? 我知道生成并签署新证书的唯一方法是与openssl命令行,配置后openssl的服务器上的CA(例如, 像这样的 )。 我需要做的,并与之通信openssl利用内幕Rails的反引号? 这似乎繁琐和脆弱。

我应该如何返回到证书管理员? 我可以只通过他们走出证书作为文本文件进行下载。 我已经看到了CA的Web界面,允许用户从浏览器请求一个证书,然后直接安装证书到浏览器中。 然后,管理员必须导出证书将它传递给客户端脚本。

我不认为存在什么样“的acts_as_CA Rails的”宝石?

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

Answer 1:

你可能想看看我们是如何做到与工具,我们称之为“证书仓库”过去类似的事情。

  • 博客文章
  • GitHub库


Answer 2:

您可以生成密钥对使用OpenSSL的宝石或SSHKEY 。

传递出的证书作为文本文件或纯文本



Answer 3:

我现在有这方面的工作。 在Ruby中OpenSSL的lib中拥有所有你需要的CA的工作方法,以明显的例子记录在这里: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL.html

我并不需要建立一个OpenSSL的CA服务器上(如问题挂钩以上) - 这是使用命令行的OpenSSL的CA. 在Ruby中使用它,你需要管理自己的CA证书存储,唯一的序列号等。

如果你想在客户端证书是直接下载到浏览器,提供PCKS12捆绑有”的.p12" 文件扩展名。 见http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/PKCS12.html的“姓名”参数使用一个友好的名称-这并不影响的DN您的证书,但它可以很容易在浏览器的选择键对话框来查找。 不包括在PKCS12捆绑你的CA证书时,Windows会要求用户安装了CA作为一个完全受信任的根CA.



文章来源: Sign new certificates in Rails application