SpringBoot实现httpsssl免密登录(X.509pki登录)

SpringBoot实现httpsssl免密登录(X.509pki登录)
要让项⽬实现 ssl 免密登录,⾸先需要开启 https 。
所以先从 Spring Boot 如何开启 https 说起。
创建服务端证书
为了开启 https ,我们需要⼀份证书。
实际开发中,会在⽹上申请⼀个机构颁发的证书。这⾥为了⽅便,我会使⽤ openssl 命令⾃⼰⽣成⼀个证书来使⽤。
openssl req -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout rootCA.key -
所有的密码都是 123456 ,然后根据提⽰输⼊相关信息就好,如果嫌⿇烦也可以直接回车跳过。
这样我们就得到了证书 和私钥 rootCA.key 。
要在 Spring Boot 中实现服务器端 X.509 ⾝份验证,还需要给我们的服务端也⽣成⼀个证书。
姜异康姜大明openssl req -new -newkey rsa:4096 -keyout localhost.key -out localhost.csr努西达
同样,密码是 123456 ,⽂件名 localhost 可以⾃⾏修改。
接下来就是⽤ rootCA 给我们的服务端证书做签名了,在此之前,我们先写⼀个配置⽂件,⾥⾯写有⼀些基本的配置
fig
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
其中 DNS.1 的值就是你的域名,⽐如 www.segmentfault , localhost 等等。如果这⾥填错了,访问⽹站时,浏览器会提⽰⽹站不安全。
然后给服务端证书签名,会提⽰你输⼊ rootCA 的密码
openssl x509 -req - -CAkey rootCA.key -in localhost.csr - -days 365 -CAcreateserial -fig
成功后,让我们查看⼀下证书的信息
openssl x509 - -text
最后再将签名证书和私钥打包到 PKCS ⽂件中
openssl pkcs12 -export -out localhost.p12 -name "localhost" -inkey localhost.key -
这条指令会要你先输⼊ localhost.key 的密码,然后再要你定义 localhost.p12 的密码。 localhost.p12 这个密码⼀定要记住,因为在 Spring 的配置⽂件中有⽤到。
另外需要特别注意的是, Spring 配置⽂件中 server.ssl.keyAlias 的值,就是命令中的 localhost(-name "localhost")。
Spring Boot开启https
把 localhost.p12 复制到 resources ⽬录下之后编译项⽬
修改application.properties⽂件
server.port=8888
server.ssl.key-store=classpath:localhost.p12
server.ssl.key-store-password=123456
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=localhost
在 chrome://settings/security 中,选择受信任的根证书颁发机构导⼊
这时启动项⽬,就可以使⽤ https 访问⽹站了,⽽且浏览器提⽰⽹站时安全的。
创建信托证书
信托证书中会存有信任的外部实体的证书
南京海关这⾥我们只要将 添加进去就可以了
山西兴华职业技术学院
keytool -import -trustcacerts -noprompt -alias ca -ext san=dns:localhost,ip:127.0.0.1 - -keystore localhost.jks
然后将 localhost.jks 添加到项⽬中,并修改配置⽂件
application.properties添加:
ust-store=classpath:localhost.jks
ust-store-password=123456
server.ssl.client-auth=need
gemini表面活性剂注意:此时由于添加了server.ssl.client-auth=need,因为没有添加个⼈证书,所以这个时候刷新页⾯,项⽬会⽆法访问,如果想要同时兼任普通登录,可以将need改成want,但是want只会在第⼀次访问页⾯时才会向客户索取个⼈证书膨胀反应
创建客户端证书
现在创建⼀个客户端的证书,步骤和服务端的差不多⼀样。
openssl req -new -newkey rsa:4096 -nodes -keyout shurlormes.key -out shurlormes.csr
在⽣成客户端证书时,那些信息不建议跳过,因为在后续的步骤中,会获取其中的信息⽤以登录。⽐如我在 Common Name 处填写的信息,就是等下⽤来登录的⽤户名。
接下来⽤ RootCA 给客户端证书签名
openssl x509 -req - -CAkey rootCA.key -in shurlormes.csr - -days 365 -CAcreateserial
然后再将签名证书和私钥打包到 PKCS ⽂件中
openssl pkcs12 -export -out shurlormes.p12 -name "shurlormes" -inkey shurlormes.key -
最后在 chrome://settings/security 选择个⼈证书把 shurlormes.p12 导⼊,期间会要你输⼊它的密码。

本文发布于:2024-09-23 23:29:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/342695.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:证书   登录   信息   签名   需要   服务端   配置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议