证书的签发参考:
https://blog.viakiba.cn/2018/09/08/Java-HTTPS-%E8%87%AA%E7%AD%BE%E8%AF%81%E4%B9%A6%E8%AE%BF%E9%97%AE/
多级证书链操作类似,如果是多级证书,可能会遇到一个一个双向认证的问题,仅针对与 Nginx配置而言, https://maoxian.de/2016/02/1370.html 。
Nginx 双向配置
server {
listen 443 ssl;
server_name nginx.skyguard.com.cn;
ssl on;
ssl_certificate ../ssl/httpd.crt;
ssl_certificate_key ../ssl/httpd.key;
ssl_protocols TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
# 如果是场馆两级证书链,即客户端证书不是直接由根证书进行签发,记得配置如下证书链深度,默认是1 即直接签发
ssl_verify_depth 1
# 开启客户端认证 这里是配置客户端证书
ssl_client_certificate ../ssl/cacert.pem;
ssl_verify_client on;
location / {
root html;
index index.html index.htm;
}
}
# 启动Nginx服务器
SpringBoot 配置
# 单向
server.port=8080
server.ssl.key-store=classpath:server.p12
server.ssl.key-store-password=aaa123(改为自己的密码)
server.ssl.keyStoreType=PKCS12
server.ssl.enabled-protocols=TLSv1.2
# 客户端认证 (双向配置)
server.ssl.trust-store=classpath:server.p12
server.ssl.trust-store-password=bbb123(改为自己的密码)
server.ssl.client-auth=need
server.ssl.trust-store-type=PKCS12
server.ssl.trust-store-provider=SUN
---------------------
验证(浏览器)
Chrome浏览器中访问双向认证服务器 修改Windows的hosts文件(C:\Windows\System32\drivers\etc\hosts),加入如下一行数据 修改Linux的hosts文件(\etc\hosts),加入如下一行数据
127.0.0.1 xxxxxx.cn
向浏览器导入证书,进入:设置=>显示高级设置=>管理证书
点击导入证书 然后一直下一步完成即可
然后在浏览器中输入:网址 选择导入的证书即可。