我目前正在开发一个项目,我已经为该CA证书创建了CA证书和几个子证书.这些证书将用于保护SAMLV2设置中的服务器间通信,因此我将获得身份提供者的证书和服务提供者的证书.用户/浏览器不会验证证书,因此只有服务器需要信任我的自定义CA. 我的证书树看起来像这样:
CustomRootCACert
CustomIdentityProviderCert
CustomServiceProviderCert
现在,我听到很多人说在生产中使用自制证书是不好的.但是,当我问为什么时,人们通常会嘀咕一些关于安全性但却从不详细说明.是否有任何技术原因不在生产中使用我自己的证书?我想不出任何......当然我意识到,如果我失去了对我的根证书的控制,任何人都可以开始创建各种证书.但在这种情况下,他们还必须在我的服务器上安装证书并配置saml应用程序以使用它们.只有这样他们才能开始生成假的saml请求和对我的应用程序的响应.
如果这是唯一的问题,这个解决方案(在生产中使用自制的证书)仍然会比我们今天的登录设置更好.
问问自己证书的证明.
如果您获得由信誉良好的CA颁发的证书,则证明证书持有者已根据其证明标准向该CA验证其身份.
如果您获得由ad-hoc CA颁发的证书,则证明有人知道如何制作证书.
如果您控制对话的两端,我认为为此目的拥有自己的私有CA是好的.你会相信自己的CA. 您可以确实这样做非常安全(通过将CA私钥保存在安全的位置离线,并签署sneakernet练习).
如果您需要说服其他人信任您的CA,那就很困难.为什么他们呢?您需要说服他们这样做是安全的,他们会将管理费用添加到客户端.
由于您仅使用证书来保护网络流量而不对用户/计算机进行身份验证,因此您可能认为使用MakeCert.exe具有合法用途.
我觉得有一件事值得一提.在花费一些时间使用MakeCert.exe界面后,您可以考虑使用独立的根证书服务器.
考虑以下几点:
(几乎)所有版本的Windows Server都免费提供证书服务器服务
Windows独立CA服务器的安装和配置非常简单
Windows独立CA服务器可以安装在虚拟机上,并在需要颁发其他证书时打开/关闭
基于VM的Windows独立CA服务器可以使用非常少的内存运行(例如256mb)
Windows独立CA服务器包含一个漂亮而干净的基于Web的注册界面,可简化请求证书.
根据您的需要,可以使用或不使用CRL检查.
在过去,我首先使用selfssl.exe启动并最终转移到MakeCert.exe以生成根证书,然后颁发我的客户端证书.但是在努力学习语法并且总是不得不记住我把根证书放在哪里后,我转而使用虚拟机中的独立根CA.
如果证书仅在内部传递,在您自己的服务器之间传递(并且不被客户端使用,不管是哪种方式) - 那么使用您自己的内部CA是完全可以接受的.
但是,有一个建议 - 没有您的根CA颁发您的提供商证书.而是使用您的根CA来创建中间CA - 然后使用它来颁发提供程序证书.当您必须开始管理证书过期,扩展系统/基础架构,撤销列表等时,这将对您有所帮助.