Java后端HTTP转HTTPS的实现

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. 附录

  1. java常见证书类型和密钥库类型
  2. 网络安全之证书、密钥、密钥库等名词解释
  3. SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
  4. http免费转https–使用阿里云(最新图解攻略)

你可能感兴趣的:(Java,积累,https,java,ssl,安全)