国内一些云服务器厂商提供免费的HTTPS证书(需要有域名,如果没有域名可使用如下方法),一个账号可以申请数个。其中,在jdk中提供了一个Java数字证书管理工具keytool,如下图:在D:\Software\JDK8\jdk\bin目录下的keytool.exe,通过这个工具可以自己生成一个数字证书。
1. 使用快捷键“Windows + R”且输入cmd,打开命令行并切换到D:\Software\JDK8\jdk\bin目录
d:
cd D:\Software\JDK8\jdk\bin
2. 使用keytool工具通过如下命令生成数字证书:
keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore https.p12 -validity 365
参数说明:
- genkey:表示要创建一个新的密钥
- alias:表示keystore的别名
- keyalg:表示使用的加密算法是RSA,一种非对称加密算法
- keysize:表示密钥的长度
- keystore:表示生成的密钥存放位置
- validity:表示密钥的有效时间,单位为天
3. 将D:\Software\JDK8\jdk\bin目录中生成的https.p12文件复制到web项目的根目录下
4. 在web项目的application.properties配置文件中添加如下ssl的配置:
server.ssl.key-store=https.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=123456
注意:以上在application.properties中的ssl配置要与命令行中的设置保持一致。
- key-store:表示密钥文件名
- key-alias: 密钥别名
- key-store-password:在cmd命令行执行过程中输入的密码
5. 编写一个用于测试的TestHttpsController类
@RestController
public class TestHttpsController {
@GetMapping("/test")
public String test() {
return "Https";
}
}
6. 启动项目,在浏览器中输入:https://localhost:8089/test
此时,如果在浏览器中输入http://localhost:8089/test的话,则会出现Bad Request错误。