Springboot配置HTTPS访问、兼容HTTP访问
配置HTTPS
这里简单介绍keytool密钥生成
1、利用Keytool生成KeyStore文件
java自带的Keytool可以生成SSL所需的密钥库、证书等文件,这里生成keyStore文件存储密钥,具体方式如下:
keytool -genkey -alias test -storetype PKCS12 -keypass test123 -keyalg RSA -keysize 1024 -validity 3650 -keystore D:/test.keystore -storepass test123
- alias: 指定别名,区分不同条目
- keysize: 密钥长度
- keyalg: RSA公私钥算法
- validity: 证书过期时间
- keystore: 指定存储密钥库,若不存在会创建,若指定则在当前文件夹下生成。
- storetype: 密钥库类型 JKS PKCS等
- keypass:指定别名条目的密码(私钥的密码)
- storepass: 指定密钥库的密码(获取keystore信息所需的密码)
- 其它参数可参考官方文档:keytool-Key and Certificate Management Tool
2、导出证书:
可根据以下命令导出证书,供客户端使用
keytool -export -alias test -file test.crt -keystore . est.keystore
3、Springboot配置
server.ssl.key-store=classpath:test.keystoreserver.ssl.key-store-password=test123
server.ssl.key-password=test123
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=test
server.ssl.enabled=true
增加完上面的配置,在密钥库没问题的情况下,启动应用后就变为HTTPS访问了。
兼容HTTP
由于某些接口不需要加密安全访问,需要增加HTTP兼容
1、增加配置
@Value("${server.http.port}") private Integer port;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(port);
return connector;
}
ps:这里需要额外配置HTTP的端口,server.port已经被HTTPS占用。
2、验证
当看到以下打印后,证明已经配置成功:
Curl测试https接口功能
curl -X POST "http://ip:port/v1" -H "token:xxx" -H "accept:*/*" -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8" -d "name=xxx" -k
-k:跳过https验证,否则需要增加证书配置,只验证接口功能的话建议-k
以上是 Springboot配置HTTPS访问、兼容HTTP访问 的全部内容, 来源链接: utcz.com/z/514175.html