使用自签名根ca保护rest服务有哪些优点和缺点?

使用自签名根ca保护rest服务有哪些优点和缺点?,rest,certificate,ssl-certificate,security,Rest,Certificate,Ssl Certificate,Security,我们正在尝试部署REST服务(服务不会面向internet),并希望使用ssl保护它。为此,我们需要证书,为了使事情更简单,我们在安装时创建了根CA 这是个好主意吗?使用自签名证书的优缺点是什么?这是个好做法吗 我是这方面的新手,所以如果我问了一些愚蠢的问题,请对我温柔一点 使用自签名证书的好处是,在开发时可以节省一点钱。缺点是你让编写客户端变得更加困难,或者要求用户点击一个“可怕的大警告”。我真的建议永远不要告诉用户点击BSW,因为它们是保护用户免受攻击者(如中间人攻击)攻击的关键部分 看,获

我们正在尝试部署REST服务(服务不会面向internet),并希望使用ssl保护它。为此,我们需要证书,为了使事情更简单,我们在安装时创建了根CA

这是个好主意吗?使用自签名证书的优缺点是什么?这是个好做法吗


我是这方面的新手,所以如果我问了一些愚蠢的问题,请对我温柔一点

使用自签名证书的好处是,在开发时可以节省一点钱。缺点是你让编写客户端变得更加困难,或者要求用户点击一个“可怕的大警告”。我真的建议永远不要告诉用户点击BSW,因为它们是保护用户免受攻击者(如中间人攻击)攻击的关键部分

看,获得一个简单的真正的单主机证书真的很便宜(比如每年几美元)。不值得存那么少的钱。值得一提的是,您将要建立一个私有CA,并关闭对所有标准CA的支持;这有点偏执,但在高安全性配置中是可以接受的,在这种配置中,分发私有CA证书并将其安装到客户端的痛苦是可以忍受的。但通常,买一个便宜的证书是最明智的…

SSL使用加密作为“”。本质上,您是通过使用受信任的根CA来验证服务器是否就是服务器所说的服务器,从而确保证书的真实性

如果您使用自签名证书,这比用户只需点击警告消息要糟糕得多——这意味着证书不为您提供任何保护。有人可以建立一个人在中间的情况下,并使用自己的自我签名证书作为你的服务。因为没有一个信任链来验证证书本身,所以客户端不能推理它是否受到中间人的影响。
现在,您可以通过操作自己的根CA来恢复安全性。如果您这样做,那么您需要一个受信任的安全通道来将根证书传送到您的客户机。不过,从好的方面来看,客户端不需要信任某些第三方CA(如Verisign)来验证您的服务。

自签名证书和CA颁发的证书之间的主要区别在于信任链。如果您签署自己的证书,那么当您或其他人使用它时,他们必须特别信任您签署证书的服务器。方法是将证书添加到浏览器(即Firefox或Microsoft针对MSIE或Chrome的CAPI存储)或Java应用程序的cacerts文件中的“可信CA根目录”列表中。否则,您的自签名证书将不受信任,您将收到“警告”或错误消息,具体取决于您在该环境(即Java或特定浏览器)中的安全设置有多严格

对于由CA签署的证书,如果签署该证书的CA或CA的受信任根(签署该CA证书的根)已在相关的信任库中(即浏览器或用于Java的cacerts文件),则不会收到该警告。Microsoft和Oracle(针对Java)正在不断更新受信任的CA,并管理CRL(证书吊销列表),用于已被泄露或吊销的CA或授权

通常,其中一个受信任的CA(如verisign、Trust等)在签署和颁发证书时收取$,有效期越长,收费越高


自签名证书是免费的,可能会发行很长一段时间(尽管不推荐)。

在问题的上下文中,它不是很重要;对于SOAP、纯HTTPS或任何其他SSL安全协议,答案都是一样的。+1提到了建立私有CA和忍受分发其证书的麻烦的非常好的动机:当你想不信任公共CA颁发机构时(谁可以随时颁发假证书)只信任你的私人CA。@DonalFellows谢谢你的回答。由于它是一个内部网环境,因此并不总是能够连接到VeriSign或其他CA来检查有效性。因此,动机不仅仅是储蓄money@gyurisc好吧,那就去私人CA吧。不过你还是想这样做;当您开始部署和支持时,这会简单得多。您可以这样做:主CA私钥在保险箱中保持脱机状态,可操作的子CA保持更高的可用性,并用于对各种系统密钥进行签名,并且不要忘记,一切都需要知道主CA“公钥”(您不需要告诉组织外的任何人)。但这超出了我的专业领域:我知道的刚刚够,知道什么时候去找专家……谢谢你的回答。在我的情况下,应用程序只会在内部使用,所以我并不需要VISISIN信任。如果客户端已经安装了一个可信的证书来识别服务器,中间的人怎么能介入?@ USER 1754036:如果证书是自签名的,客户端将不会有证书被安装。如果你不在互联网上,为什么要使用ssl?或者你的意思是你的服务是(或曾经是)在互联网上,但只用于私人连接?