经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
spring boot配置ssl实现HTTPS的方法
来源:jb51  时间:2019/4/1 8:48:04  对本文有异议

传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC 5246 (2008年8月)与 RFC 6176 (2011年3月)。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。主要的网站,如Google、Facebook等也以这个协议来创建安全连接,发送数据。目前已成为互联网上保密通信的工业标准。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

在配置TLS/SSL之前我们需要拿到相应签名的证书,测试实例可以使用Java 下面的 Keytool 来生成证书:

打开控制台输入:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

这里的别名是 keystore.p12,密码什么的直接设置就好,然后回车

然后根据路径找到生成好的证书,把证书复制到项目里,我是放到了这里

放好证书后,建立一个index.html放到resources/templates文件夹下,一会用于测试。

再配置properties

  1. server.port=8888
  2. server.tomcat.uri-encoding=utf-8
  3. server.servlet.context-path=/demo
  4. server.ssl.key-store=keystore.p12
  5. server.ssl.key-store-password=123456
  6. server.ssl.key-store-type=PKCS12
  7. server.ssl.key-alias=tomcat
  8. spring.thymeleaf.prefix=classpath:/templates/

配置好properties再加入下面的代码

  1. @Configuration
  2. public class HttpsConfig {
  3. /**
  4. * spring boot 1.0
  5. */
  6. /* @Bean
  7. public EmbeddedServletContainerFactory servletContainer() {
  8. TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
  9. @Override
  10. protected void postProcessContext(Context context) {
  11. SecurityConstraint constraint = new SecurityConstraint();
  12. constraint.setUserConstraint("CONFIDENTIAL");
  13. SecurityCollection collection = new SecurityCollection();
  14. collection.addPattern("/*");
  15. constraint.addCollection(collection);
  16. context.addConstraint(constraint);
  17. }
  18. };
  19. tomcat.addAdditionalTomcatConnectors(httpConnector());
  20. return tomcat;
  21. }*/
  22. /**
  23. * spring boot 2.0
  24. * @return
  25. */
  26. @Bean
  27. public TomcatServletWebServerFactory servletContainer() {
  28. TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
  29. @Override
  30. protected void postProcessContext(Context context) {
  31. SecurityConstraint constraint = new SecurityConstraint();
  32. constraint.setUserConstraint("CONFIDENTIAL");
  33. SecurityCollection collection = new SecurityCollection();
  34. collection.addPattern("/*");
  35. constraint.addCollection(collection);
  36. context.addConstraint(constraint);
  37. }
  38. };
  39. tomcat.addAdditionalTomcatConnectors(httpConnector());
  40. return tomcat;
  41. }
  42. @Bean
  43. public Connector httpConnector() {
  44. Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
  45. connector.setScheme("http");
  46. //Connector监听的http的端口号
  47. connector.setPort(8080);
  48. connector.setSecure(false);
  49. //监听到http的端口号后转向到的https的端口号
  50. connector.setRedirectPort(8888);
  51. return connector;
  52. }
  53. }
  1. @Controller
  2. @RequestMapping
  3. public class ViewControlller {
  4. @GetMapping("index")
  5. public String index(){
  6. return "index";
  7. }
  8. }

值得注意的是加入的springboot jar的版本不同代码有一定的改变,我这里用的是2.0的版本,还有就是要想跳转到html页面的时候一定注意的就是千万不要在Controller中用@RestController而是要用Controller,如果用RestController的话就会直接把你的index解析显示在页面当中,就不会跳转了,还有就是想要跳转的话一定要加入下面的两个jar包

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <version>2.0.1.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  9. </dependency>

准备完毕后启动项目,打印台显示

再输入:

127.0.0.1:8080/demo/index就会自动跳转

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号