SpringBoot Web Https 配置

Stella981 等级 322 0 0
标签: httpsweb开发

不管是游戏服务器开发,还是其它服务开发,越来越多的平台都要求服务端必须支持https的访问。以增加安全性。比如目前火热的小程序,要求服务端必须支持https,苹果商店也有说http请求要修改为https。所以https将会是游戏服务器的普遍需求。

一,证书生成

   证书可以自己使用jdk生成进行测试。但是在正常使用的时候,需要去第三方机构购买,网上也有免费的。不过有效期有限制。具体获取证书的方法这里不再详细说明了。一般拿到证书之后会得到这几个文件:

   cert.pem chain.pem   fullchain.pem  privkey.pem

二,将pem文件转化为keystore文件

如果使用nginx跳转的话,上面的证书文件可以直接使用,但是在tomcat中,证书的配置文件格式必须是.keystore的文件。所以需要做一下转化。

1、生成pkcs12格式的密钥文件:

$ openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out my.pk12 -name mykey

(注:此过程中需要输入密码:123456)

2、生成keystore:

$ keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore my.keystore -srckeystore my.pk12 -srcstoretype PKCS12 -srcstorepass 123456 -alias shkey

成功之后会获得my.keystore文件。

三,在Spring boot web中配置https

首先是在application.properties中添加配置

1

2

3

4

5

server.port=  8446

server.ssl.key-store=/user/cert/my.keystore

server.ssl.key-store-password= 123456

这样配置之后,启动服务,就可以https访问了。

四,同时支持http和https访问

1,http请求不跳转成https访问

这种方式是http请求单独走一个端口,https请求单独走一个端口。但是spring boot 的appplication.properties只能配置一个端口,这就需要我们手动再添加一个Connector了。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

@Configuration

public  class  TomcatConfig {

@Bean

public  EmbeddedServletContainerFactory servletContainerFactory(){

TomcatEmbeddedServletContainerFactory tomcatConfig =  new  TomcatEmbeddedServletContainerFactory();

tomcatConfig.addAdditionalTomcatConnectors( this .newHttpConnector());

return  tomcatConfig;

}

private  Connector newHttpConnector() {

Connector connector =  new  Connector( "org.apache.coyote.http11.Http11NioProtocol" );

connector.setScheme( "http" );

connector.setPort( 8080 );

connector.setSecure( false );

return  connector;

}

}

这样普通 的http请求,可以访问8080端口了。

2,将http请求强制跳转到https

有时候我们的一些旧业务是使用的http,但是新业务以及将来的框架都必须强制使用https,那就需要做一下跳转,把收到的http请求强制跳转到https上面。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

@Configuration

public  class  TomcatConfig {

@Bean

public  EmbeddedServletContainerFactory servletContainerFactory(){

TomcatEmbeddedServletContainerFactory tomcatConfig =  new  TomcatEmbeddedServletContainerFactory(){

@Override

protected  void  postProcessContext(Context context) {

SecurityConstraint securityConstraint =  new  SecurityConstraint();

securityConstraint.setUserConstraint( "CONFIDENTIAL" );

SecurityCollection collection =  new  SecurityCollection();

// 这里不知道为什么,只能配置以/*结尾的path。这样配置表示全部请求使用安全模式,必须走https

collection.addPattern( "/*" );

//另外还可以配置哪些请求必须走https,这表示以/home/开头的请求必须走https

collection.addPattern( "/home/*" );

securityConstraint.addCollection(collection);

context.addConstraint(securityConstraint);

}

};

tomcatConfig.addAdditionalTomcatConnectors( this .newHttpConnector());

return  tomcatConfig;

}

private  Connector newHttpConnector() {

Connector connector =  new  Connector( "org.apache.coyote.http11.Http11NioProtocol" );

connector.setScheme( "http" );

connector.setPort( 8080 );

connector.setSecure( false );

// 如果只需要支持https访问,这里把收到的http请求跳转到https的端口

connector.setRedirectPort( 8446 );

return  connector;

}

}

以上跳转也可以使用nginx实现。

收藏
评论区

相关推荐

HTTPS
### 最近网站更新为https,于是做个笔记 ### 将域名 [www.domain.com](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.domain.com) 的证书文件1\_www.domain.com\_bundle.crt 、 ### 私钥文件2\_www.doma
HTTPS
楔子 谣言粉碎机前些日子发布的《[用公共WiFi上网会危害银行账户安全吗?](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.guokr.com%2Farticle%2F100110%2F)》,文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的。随着网络越
HTTPS请求
##HTTPS请求## > **HttpsUtils代码** package com.ices.utils.httpsHelp; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader;
Hibernate Validator 手动发起验证
在 SpringBoot 开发 web 项目的时候, 表单参数验证, 常用 Hibernate Validator 需要在参数类的属性上添加注解 [@NotNull](https://my.oschina.net/notnull) , [@Max](https://my.oschina.net/maxttyl), [@Min](https://my.osc
Nginx配置https
一、开启nginx的ssl模块 1.未安装过nginx,编译安装配置参数如下: ./configure \--prefix=/usr/local/nginx \--with-pcre \--with-http\_ssl\_module #ssl模块 \--with-http\_stub\_status\_module \--wit
Spring Boot 2.0 版的开源项目云收藏来了!
先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目([https://gitee.com/ityouknow/favorites-web](https://gitee.com/ityouknow/favorites-web))目前在 Github 上面已经有1600多个 Star,如果按照 SpringBoot 标签进行筛选的话也可
SpringBoot Web Https 配置
不管是游戏服务器开发,还是其它服务开发,越来越多的平台都要求服务端必须支持https的访问。以增加安全性。比如目前火热的小程序,要求服务端必须支持https,苹果商店也有说http请求要修改为https。所以https将会是游戏服务器的普遍需求。 一,证书生成 ======    证书可以自己使用jdk生成进行测试。但是在正常使用的时候,需要去第三方机构
SpringBoot 整合Filter
SpringBoot 整合Filter =================== 一、创建基础SpringBoot项目,集成Web即可 -------------------------- <**dependency**\> <**groupId**\>org.springframework.boot</**groupId**\> <**a
SpringBoot2.2.2版本自动建表
环境 idea2019.2  jdk1.8   数据库mysql 5.7 项目 结构 ![](https://oscimg.oschina.net/oscnet/3179dc9eee1e56f4ce94321ca71451f2f43.png) new ->Project  使用springboot快速搭建web项目        选好sdk  next
SpringBoot热部署加持
![Ultrafine 5K](https://upload-images.jianshu.io/upload_images/9824247-8bcc770c7a2f4a1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * * * 概述 -- 进行SpringBoot的Web开发过程中
SpringBoot2.2.2版本自动建表
环境 idea2019.2  jdk1.8   数据库mysql 5.7 项目 结构 ![](https://oscimg.oschina.net/oscnet/3179dc9eee1e56f4ce94321ca71451f2f43.png) new ->Project  使用springboot快速搭建web项目        选好sdk  next
SpringBoot热部署加持
![Ultrafine 5K](https://upload-images.jianshu.io/upload_images/9824247-8bcc770c7a2f4a1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * * * 概述 -- 进行SpringBoot的Web开发过程中
springboot+jpa+mysql+swagger2.0整合
![](https://oscimg.oschina.net/oscnet/f059f6725a8720bd14f78fdd13beb455b7e.gif)![](https://oscimg.oschina.net/oscnet/e03ceca65483920656e7521ed8998988943.gif)Springboot+jpa+MySQL+swa