客户端Self-signed certificate使用:对接SSL/HTTPS服务端需提供哪些凭证?
自签名证书客户端认证问题解答
一、需要向服务端提交的凭证
你仅需向服务端提供生成的自签名证书即可,不需要单独提交RSA公钥。
自签名证书本身已经内置了对应的RSA公钥、主体信息、签名规则等所有服务端需要的校验信息,服务端会将你提供的证书加入自身的客户端信任列表。后续TLS握手阶段,服务端会校验你出示的客户端证书是否在信任列表中,同时验证你握手中的签名是否和证书内的公钥匹配,确认你持有对应的RSA私钥。
重要提醒:永远不要将你生成的RSA私钥发送给任何第三方,包括对接的服务端。
二、是否需要校验服务端证书
必须校验。
不管服务端是否要求客户端提供证书,客户端都必须对服务端返回的证书做合法性校验,否则会存在中间人攻击风险:攻击者可伪造服务端和你建立连接,窃取你传输的所有数据,包括客户端证书验证环节的敏感信息。
如果服务端使用的也是自签名证书,你需要提前向服务端索要它的自签名证书,配置到你的客户端信任证书列表中,TLS握手时强制校验服务端返回的证书和本地信任的证书一致即可。
补充注意事项
- 生成的RSA私钥需要妥善保存在你的应用服务本地,配置到SSL/HTTPS客户端的对应配置项中,用于握手阶段的签名校验,禁止泄露给外部人员。
- 若你生成的自签名证书设置了有效期,需要在到期前重新生成新的证书并同步给服务端更新信任列表,避免业务连接中断。
- 自签名证书不需要额外提交给公共CA做公证,服务端单独信任你的证书即可完成完整校验流程。
内容的提问来源于stack exchange,提问作者Joerdan Devera
相关产品推荐
相关产品推荐

