【开发细节】SpringBoot项目将接口从HTTP换为HTTPS

服务器 0

证书准备

首先需要生成一个 SSL 证书,可以使用 OpenSSL 工具或者自己的 CA 颁发机构来生成证书,这里就不赘述了。如果是测试阶段,也可以使用 self-signed certificate
直接使用jdk的keytool生成,具体操作方法如下:

  1. 使用管理员身份运行命令提示符
  2. 使用命令进入到jdk安装路径的bin文件夹下
  3. 随后使用命令:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650生成密钥。

以上步骤如下图所示:
在这里插入图片描述
在这里插入图片描述
生成的证书如下:
在这里插入图片描述
把它粘贴到项目的classpath下即可使用。

项目配置

把证书文件移动到此:
在这里插入图片描述
而后在application.yml中进行一些配置:
注意key-store-password不要写成key-password了。

server:  ssl:    enabled: true #启用SSL    key-store: classpath:keystore.p12 #文件位置    key-store-password: root123 #密钥存储密码(即生成时要求输入两遍的那个的密钥库口令)    key-store-type: PKCS12 #密钥存储类型

重启项目,启动成功即说明配置成功。
访问项目原来的swagger界面测试一下。
在这里插入图片描述
出现以上说明正确。
在前面加上前缀https://再试一次,可能会出现如下界面:
在这里插入图片描述
由于访问的是 HTTPS,浏览器会进行 SSL 验证,如果服务器没有配置合法的 SSL 证书,浏览器会给出安全警告。如果只是测试阶段,可以先信任自己的 SSL 证书,例如在 Chrome 中将证书添加到受信任的根证书颁发机构中。生产环境中,则需要购买合法的 SSL 证书。
此处我们是个人测试,故而点击详情直接访问即可。
在这里插入图片描述
成功进入swagger界面:
在这里插入图片描述
测试接口,发现已经成功放入HTTPS了:
在这里插入图片描述

前端怎么做?

前端访问 HTTPS 上的接口与 HTTP 上的接口是类似的,只需要将 URL 中的 http 改成 https。例如,如果原本访问的是 http://localhost:8080/api/user,修改为 https://localhost:8080/api/user 即可。

这里需要注意一个问题:HTTP默认端口是80,而HTTPS默认端口是443,建议指定端口,避免搞错。

也许您对下面的内容还感兴趣: