SpringBoot配置支持https

spring boot因为是使用内置的tomcat,所以只需要一些简单的配置即可。

1.首先打开命令行工具,比如cmd,输入以下命令
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

2.然后在你的根目录下面会看到一个.p12的文件,如下图所示:

3.将它移到你的spring boot项目中的resources目录下

4.最后在application.properties中添加以下配置:

server.port=8888
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=123456(此处密码为第一步中创建.p12文件时你输入的口令)
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat

5.最后启动你的spring boot项目即可用https的方式访问你的接口了。

用户访问http自动跳转到https,支持post方法

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class HttpConnectorConfig { // 在某配置类中添加如下内容
// 监听的http请求的端口,需要在application配置中添加http.port=端口号 如80
@Value("${http.port}")
Integer httpPort; //正常启用的https端口 如443
@Value("${server.port}")
Integer httpsPort; // springboot2 写法
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addMethod("post"); //添加post方法
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
} @Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(httpPort);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(httpsPort);
return connector;
} }

---------------------
作者:颜艺学长
来源:CSDN
原文:https://blog.csdn.net/hwangfantasy/article/details/78403570
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. C#开发微信门户及应用(2)--微信消息的处理和应答
  2. python 生成验证码
  3. AM335x kernel4.4.12 LCD 时钟翻转设置记录
  4. 对rxandroid的简单理解
  5. NPOI读取Excel
  6. java二维数组的常见初始化
  7. 【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题
  8. 学习hamcrest和mockito时的总结和demo
  9. 关于linux开机自启
  10. springmvc 例
  11. Appium Android Bootstrap控制源代码的分析AndroidElement
  12. 关于Ueditor 前后端分离实现文件上传到独立服务器的问题 望大神们赐教
  13. Ubuntu16.04 换阿里源
  14. Python爬取豆瓣指定书籍的短评
  15. Nagios 监控windows server Apache 服务
  16. ceph 搭建nginx负载3个对象网关
  17. 【uoj336】【清华集训2017】无限之环
  18. JAVAFX开发桌面应用
  19. 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
  20. 如何计算 App 的启动时间

热门文章

  1. gulp项目和webpack项目在浏览器中查看的方式
  2. POJ1108_Split Windows 解题报告
  3. ps -aux返回超时的可能原因
  4. python数据结构与算法第十四天【二分查找】
  5. 当进行数据查询时候 要考虑创建一个model ;具备传入与输出的字段
  6. 前端动态属性页面的 要用id做name 因为这样方便在提交表单时候取到值
  7. ES6函数增强
  8. 各种MM(存储器)含义
  9. RFC2544测试指标
  10. hiho1249 Xiongnu's Land