https原理(十)B2B要不要CA?CA和双向究竟解决的是什么问题?双向ssl要不要CA?自签名到底是啥?【重要】

1

B2B有个特征,密钥可以面对面给,认证不必借助CA认证公钥身份再使用公钥

服务器把公钥直接给客户端,通信时送来的公钥,我把它跟面对面送来的验一下

这样客户端就能信任服务端

如果照葫芦画瓢给客户端也来一套,就变成了双向ssl

ca是解决网络上公钥无法面对面给的缺陷,引入ca私钥从而证明身份;浏览器弹框是因为浏览器没有线下给的服务器公钥

如果获取对方的公钥的方式有绝对的权威性,比如到支付宝网站上下载,那么就不需要ca了

在这个过程中,无论是客户端验服务端公钥(地址栏)还是服务端验客户端公钥-want拦截器),假如中间人能用同样的私钥,同样的CN,则能够完成替换,所以ca不要乱来要审核好,比如https原理(四)双向实践(java客户端+tcp代理)中的第9点

 

假如我是客户端

第一步 收到并验证服务器公钥

  跟线下的验证

  或借助CA验证

第二步 用对方(服务器的)的公钥给对方发消息,不让明文出现在密码

 

而双向解决的是换位思考假如我是服务端怎么办

 

到此时来看第三个问题,双向ssl要不要CA?原则是不需要;因为解决的是不同的问题

双向ssl的使用场景是B2B,可以线下交换好公钥,把对方的公钥加入truststore,通信时就不需要CA了

 

 

2

https://support.apple.com/zh-cn/guide/safari/aside/glos38341b39/mac

自签名证书是由颁发证书的同一实体所签名的证书。

 

https://cloud.tencent.com/developer/article/2355693

在实践中,我们可以选择使用自签名证书,而这些自签名证书又分为带CA(证书颁发机构)和不带CA两种。

一、自签名证书的基本概念

自签名证书是指由用户自己生成和签名的证书,而不是由公认的证书颁发机构(如VeriSign或Let's Encrypt)签名的证书。自签名证书是免费的,但通常不受浏览器和其他客户端的信任。

二、带CA与不带CA的自签名证书区别

2.1 定义和结构

  • 带CA的自签名证书:在这种情况下,用户不仅生成自己的证书,还创建了自己的CA,然后使用该CA签名其证书。这意味着用户有自己的证书颁发机构环境,可以用于签名多个证书。
  • 不带CA的自签名证书:在这种情况下,用户只是为自己创建和签名一个证书,而没有创建CA。这个证书是单独存在的,不依赖于任何CA结构。

2.2 可信度和管理

  • 带CA的自签名证书可以为多个证书提供统一的签名和管理环境,使得在较大的组织或系统中,证书的管理和验证更为集中和统一
  • 不带CA的自签名证书通常适用于简单的、小规模的环境,或者测试和开发阶段,它们缺乏集中管理和验证的能力。

2.3 扩展性和应用场景

  • 带CA的自签名证书具有较好的扩展性,适用于需要多个证书,并且需要统一管理和验证的场景。
  • 不带CA的自签名证书适用于单一的、简单的应用场景,如个人网站或测试环境。

三、如何选择

选择带CA还是不带CA的自签名证书,主要取决于我们的具体需求和应用场景。

  1. 规模和复杂度:如果环境有多个服务器和服务,或者希望能够集中管理和验证证书,那么创建自己的CA,并使用带CA的自签名证书可能是一个更好的选择。
  2. 成本和资源:如果预算有限,或者只是需要一个简单的、临时的解决方案,那么不带CA的自签名证书可能是一个快速且无成本的选择。
  3. 安全和信任度:如果需要更高级别的信任和安全保障,可能需要考虑购买公认CA签名的证书,而不是使用自签名证书。
  4. 未来的扩展计划:如果计划未来将扩展您的系统或服务,那么现在就创建自己的CA,并使用带CA的自签名证书可能会为未来的扩展节省很多时间和精力。

综上所述,理解自签名证书的不同类型及其适用场景,能够帮助我们做出更明智的决策,以满足您的安全和管理需求。

四、不带CA的自签名证书实现互信和加密

不带CA的自签名证书也可以在多个系统之间实现互信和加密,但是过程可能会相对复杂和不便。以下是使用不带CA的自签名证书实现多系统互信和加密的基本步骤和考虑因素:

1. 证书生成和分发:

  • 首先,您需要生成一个自签名证书(包括公钥和私钥)。
  • 然后,将这个证书(公钥)分发给所有需要互信的系统。每个系统都需要有这个证书的副本,以便它们可以验证对方的身份。

2. 证书安装和配置:

  • 在每个系统上安装自签名证书,并配置系统以使用该证书来建立安全的通信连接。

3. 证书信任:

  • 由于自签名证书不是由公认的CA签名的,所以您需要在每个系统上手动配置信任该证书。这通常意味着将证书添加到每个系统的信任证书存储中。

考虑,当有一个新系统,搞了新证书,那么自签名CA的情况下,其他系统环境什么都不用做,因为他们已经有CA了,但如果是无CA的自签名,还要吧这个证书发给所有人,让他们导入他们系统的信任库,几乎是不可接受的

4. 证书维护:

  • 如果证书过期或需要更换,您必须在所有系统上更新证书。这可能会成为一个繁琐且容易出错的过程。

5. 安全考虑:

  • 使用同一个证书(公钥和私钥)在多个系统之间共享,可能会增加安全风险。如果私钥泄露,所有使用该证书的系统都会受到影响。

6. 可扩展性和管理:

  • 随着系统数量的增加,管理和维护证书的复杂性也会增加。每当证书需要更新或更换时,都需要在所有系统上执行这些操作。

不带CA的自签名证书能够实现多系统之间的互信和加密,但可能不是最佳选择,尤其是在有大量系统需要互信的环境中。自建CA并使用带CA的自签名证书可能是一个更可控、更安全、并且更易于管理的解决方案。同时,如果可能,考虑采用公认的CA签名的证书,可以提供更高级别的信任和安全保障。

 

 

 

 

3 与https原理(二)服务端公钥有没有被CA私钥加密【重要】中类似的公式

自签名无CA证书=公钥+签名

签名=自己的私钥加密(md5公钥)

 

posted on 2025-03-21 21:28  silyvin  阅读(34)  评论(0)    收藏  举报