HTTPS是HTTP的加密实现,其中引入了公钥,私钥,数字证书等概念,以实现数据收发双方的身份认证和数据加密。
1. 原理
数字证书在用户公钥后附加了用户信息及CA的签名。公钥是密钥对的一部分,另一部分是私钥。公钥公之于众,谁都可以使用。私钥只有自己知道。由公钥加密的信息只能由与之相对应的私钥解密。为确保只有某个人才能阅读自己的信件,发送者要用收件人的公钥加密信件;收件人便可用自己的私钥解密信件。同样,为证实发件人的身份,发送者要用自己的私钥对信件进行签名;收件人可使用发送者的公钥对签名进行验证,以确认发送者的身份。
在线交易中可使用数字证书验证对方身份。用数字证书加密信息,可以确保只有接收者才能解密、阅读原文,信息在传递过程中的保密性和完整性。有了数字证书网上安全才得以实现,电子邮件、在线交易和信用卡购物的安全才能得到保证。
2. 实现
2.1 证书的获取
一般有两种方式:
1)使用工具在本地生成自签名证书。
// 使用JDK工具keytool生成自签名证书(秘钥库)
keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore
2)向权威机构购买由该机构签名认证的证书(CA证书)。
区别是,前者无法被各大浏览器认可(一般浏览器地址栏会显示“不安全”的字样),后者则能够被浏览器识别,有的甚至直接能够解析出连接地址名称。当然后者也是要money的~~,不过可以在 阿里云申请免费的个人证书 。参考附录的第4篇引文
2.2 将证书文件拷贝到SpringBoot工程根目录下
提示:和pom.xml同级目录下
2.3 在SpringBoot工程的application.yml文件中添加ssl配置
server:
port: 10080 ## 后台服务对外端口
ssl:
key-store: server.keystore ##秘钥库文件名称,即上面生成的自签名证书
key-store-password: 123456 ## 生成秘钥库文件的密码
key-store-type: JKS ## 秘钥库类型(JKS为jdk的keytool工具默认生成的秘钥库类型)
key-alias: tomcat ## 秘钥别名
运行SpringBoot工程,在浏览器中使用 https://localhost:10080/xxxx 访问相应的API接口,实现HTTPS方式访问API
3. 附录
- java常见证书类型和密钥库类型
- 网络安全之证书、密钥、密钥库等名词解释
- SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
- http免费转https–使用阿里云(最新图解攻略)
转载:https://blog.csdn.net/wangyahua1234/article/details/105254231
查看评论