2012-10-23 43 views
1

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

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

admin用户将在客户端应用程序中安装此证书。这些应用程序将能够使用新的证书来访问REST API。

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

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

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

[请注意,我已经知道如何对我的私钥进行客户端请求验证。这个问题具体涉及颁发新证书。]

回答

0

我有这个工作了。在Ruby中OpenSSL的lib中拥有所有你需要的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,但它可以很容易地在浏览器的选择键对话框中找到。 不要将您的CA证书包含在PKCS12包中,Windows会要求用户将您的CA安装为完全受信任的根CA.

0

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

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

相关问题