在Rails应用程序中签署新证书

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

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

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

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

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

我不认为Rails有任何“ acts_as_CA ”gem?

[请注意,我已经知道如何根据我的私钥validation客户端请求。 这个问题特别涉及颁发新证书。]

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

  • 博客文章
  • GitHub回购

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

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

我现在有这个工作。 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的您的证书,但它可以在浏览器的选择键对话框中轻松找到。 不要将您的CA证书包含在PKCS12捆绑包中,Windows会要求用户将您的CA安装为完全受信任的根CA.