SpringBoot SSL 双向认证配置

双向验证Two Way SSL)不仅客户端需要验证服务端,服务端同样戒备心很重,也需要验证客户端是否是合法。

验证合法性通常是通过Trust Store,要求要把对方的cert装在自己的Trust Store里。

Trust Store:密钥文件可以存放私钥和公钥,具体就是可以存放自己的私钥、自己的公钥和别人的公钥(也可以存放别人的私钥,但这不合理,私钥必须私有)。一般地我们把自己的(私钥和公钥)存放在Key Store里,而把别人的公钥存放在Trust Store里。

#生成密钥文件jks
keytool -genkeypair -alias serverkey -keyalg RSA -dname "CN=Server,OU=Ziguo,O=Ziguo,L=Ziguo,S=NY,C=CN" -keypass bigkeystorepass -keystore server.jks -storepass bigkeystorepass  -validity 3650
keytool -genkeypair -alias clientkey -keyalg RSA -dname "CN=Client,OU=Ziguo,O=Ziguo,L=Ziguo,S=NY,C=CN" -keypass bigkeystorepass -keystore client.jks -storepass bigkeystorepass -validity 3650

#导出cert文件
keytool -exportcert -alias clientkey -file client-public.cer -keystore client.jks -storepass bigkeystorepass 
keytool -exportcert -alias serverkey -file server-public.cer -keystore server.jks -storepass bigkeystorepass

#把客户端的cert导入到服务端
keytool -importcert -keystore server.jks -alias clientcert -file client-public.cer -storepass bigkeystorepass -noprompt 
#把服务端的cert导入到客户端 
keytool -importcert -keystore client.jks -alias servercert -file server-public.cer -storepass bigkeystorepass -noprompt

#转换JKS格式为P12
keytool -importkeystore -srckeystore server.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore server.p12 -srcstorepass bigkeystorepass -deststorepass  bigkeystorepass

# 检验服务端是否具有自己的private key和客户端的cert
keytool -list -v -keystore server.jks

最近配置spring boot ssl双向认证,日志不断报出 the trustAnchors parameter must be non-empty

再次配置springCloud双向验证遇到问题:

  1. CN参数配置访问域名,否则java.security.cert.CertificateException: No name matching localhost found executing,可以通过重写httpsconfig 不用验证域名。
  2. 重写FeignHttpsConfig遇到问题,涉及到https.protocols配置一致性,ENABLED_CIPHER_SUITES 列表等等。
  3. keytool导出证书,各种格式蒙圈。
  4. 以前配置Apache CXF双向认证,笔记做的太简单,很多细节无法回忆。

参考文章:

https://github.com/viniciusccarvalho/boot-two-way-ssl-example

https://www.cnblogs.com/larrydpk/p/12830365.html

HTTPS SSL 握手流程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值