首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CA证书是否足以与SSLServerSocket安全地通信?

使用CA证书是否足以与SSLServerSocket安全地通信?
EN

Stack Overflow用户
提问于 2019-07-10 21:33:10
回答 1查看 69关注 0票数 2

我有一个Java服务器应用程序,我能够使用自签名证书和密钥对与它的客户端通信。这是在我的开发机器上完成的。

现在,是在一个活动服务器上启动应用程序的时候了,我已经从一个权威机构(LE)获得了SSL证书。

我可以导出签名的证书,并将其导入到为我的Android客户端提供的安全城堡密钥库中。然而,有一件事让我思考。如果证书过期,这意味着每次都必须更新应用程序。我不想这样做,我觉得工作太多了。

我读了这个页面,他们提到( SSL的密钥,条目号3),只要拥有CA证书就足以建立连接。

可以选择导出私钥的公钥证书,并将其分发给将与您交互的SSL各方。(请参阅“从密钥库导出公钥证书”一节)如果您使用的是来自证书颁发机构的证书,那么其他人只拥有证书颁发机构本身的证书就足够了。

我想知道这有多安全,有什么影响(如果有的话)。

这样做的目的是避免每次更新证书时重新编译客户端应用程序。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-10 22:20:25

据我所知,只有您的客户端正在验证您的服务器,而不是相反。这是一种身份验证,因为只有一方在认证另一方。我可能错了,你们可能在做相互认证,但我们会讨论的。首先,让我们考虑一下更简单的情况。

为了让客户端对您的服务器进行身份验证,服务器需要一个带有私钥的SSL证书,而您似乎拥有该证书。此证书由CA证书签名,该证书可能是由根证书签名的。为了使客户端信任您的服务器,它需要一个CA证书列表,客户端信任这些证书来签署ssl证书。此证书列表是您的信任存储区。您的信任存储应该具有受信任CA的根和CA证书。

如果服务器的SSL证书过期,则需要为服务器获得新的证书。如果您的新证书是由签署旧证书的同一CA签名的,则客户端将继续信任您的服务器而不进行任何更新。但是,如果您的新证书由客户端未知的CA签名(即CA证书不在信任存储区中),则需要使用新证书的CA和根证书更新客户端的信任存储。

这描述了单向身份验证。但是,如果应用程序需要相互身份验证,除了客户端对服务器进行身份验证外,您的服务器还需要对客户端进行身份验证。这个过程完全相同,但正好相反。客户端还需要ssl证书,服务器还需要具有签名客户端证书的根/CA证书的信任存储。适用的规则与服务器验证客户端时相同。因此,如果客户端的ssl证书过期,并且服务器的信任存储区不知道新证书,则必须用新CA的证书更新信任存储。

绕过手动更新信任存储的一种方法是使用您信任的CA自动获得新的信任存储。这就是你的浏览器所做的。但是,如果需要新的证书,则仍然需要更新应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56978947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档