一、前言
最近公司后台系统与微信公众号对接的项目初步完成,在经过测试通过后,老板提醒我公司的官网是"https"协议的,而我之前的测试则都是"http"协议的,这下子我楞了一下,因此我需要给我自己的 tomcat 服务器上安装 ssl 证书,然后再重新进行测试(表示无所畏惧!!!),然而,除了在 tomcat 上面配置,我们还有其它的方法吗?毕竟,有些小伙伴是真的不太懂 tomcat(表示创建 SpringBoot 项目,内部集成 tomcat ,打包后,一个 jar 包启动,简单便捷,哪里还需要在 tomcat 中进行配置)有的,有的,既然 tomcat 这么讨厌,我们直接在 SpringBoot 中改造就好了。
二、改造流程
1、前提条件
我们需要拥有一个已经拥有 ssl 证书的域名,如果域名还没有 ssl 证书的话,可以先申请,现在大部分的厂家都支持每年一定额度的免费申请,如阿里云每年可以创建 20 个免费的证书。
登录阿里云的“数字证书管理服务”控制台,然后点击免费证书,再点击创建证书,填写相关信息,通过验证,等待几分钟就申请到啦
2、下载 ssl 证书
接下来,我们点击下载按钮,下载 ssl 证书,这里我选择的是 JKS 格式
3、改造 SpringBoot 项目
- 放置 ssl 证书文件:
- 修改 application.yml 文件:
server: port: 443 # https默认访问端口 ssl: enabled: true key-store: classpath:server.keystore # 证书存放的位置,若是放置在resources目录下,直接将server.keystore替换成你的证书名字即可 key-store-password: 123456 #你的证书密码,即后缀名为“.txt”文件里面的内容 key-store-type: JKS # P12证书格式
- 配置转换器(在启动类中增加内容)
既然已经配置了 https 访问,那么原来使用 http 协议进行访问的路径也应该重定向到 https 路径下@SpringBootApplication public class TestProject3Application { // http 请求端口,线上配置为 8080 @Value("${server.port-http}") private int serverPortHttp; // 服务器运行端口,等同于 HTTPS 请求端口,线上 443 @Value("${server.port}") private int serverPortHttps; public static void main(String[] args) { SpringApplication.run(TestProject3Application.class, args); } /** * http重定向到https */ @Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat; tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint constraint = new SecurityConstraint(); constraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); constraint.addCollection(collection); context.addConstraint(constraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector(Http11NioProtocol.class.getName()); connector.setScheme("http"); //Connector监听的http的端口号 connector.setPort(serverPortHttp); connector.setSecure(false); //监听到http的端口号后转向到的https的端口号 connector.setRedirectPort(serverPortHttps); return connector; } }
4、验证流程
- maven 打包成 jar 包
- 在终端控制器中移动到 jar 包所在的目录下,通过 java -jar xxxx.jar 启动项目
- 浏览器中使用
https://你的域名/项目名称
进行访问,如果浏览器地址栏显示安全锁标识,则说明 SpringBoot 项目改造成功。如下图所示:
三、总结
以上就是我个人使用 SpringBoot 配置 https 的整个流程,写完笔记之后,感觉更加流畅了,如果有什么问题,可以将问题发我邮箱 luodiab@126.com,欢迎各位的意见。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于