在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.