快捷搜索:  汽车  科技

springboothttps调用(springboot配置https以及http重定向)

springboothttps调用(springboot配置https以及http重定向)-alias 你的证书别名keytool -genkey -alias tomcat -keyalg RSA -validity 20000 -keystore keystore.p12参数说明:然后在该目录下打开 cmd ,输入命令:windows 平台:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365linux平台:

因业务需求,需要将 htpp 请求转为 https 请求,这里需要 ssl 证书,证书的获取可以借助 jdk 自带的 keytool 工具生成。

原文地址:

https://www.cnblogs.com/notchangeworld/p/12669148.html https://www.cnblogs.com/atomgame/p/12410985.html


一、生成 ssl 证书

进入 jdk 的 bin 目录,可以看到 keytool 工具

springboothttps调用(springboot配置https以及http重定向)(1)

然后在该目录下打开 cmd ,输入命令:

windows 平台:

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

linux平台:

keytool -genkey -alias tomcat -keyalg RSA -validity 20000 -keystore keystore.p12

参数说明:

-alias 你的证书别名

-keyalg 密钥算法

-keystore 证书库文件保存的位置和文件名

-keysize 密钥长度

-validity 证书有效期天数

生成的证书就在 bin 目录下

springboothttps调用(springboot配置https以及http重定向)(2)


二、将生成的keystore.p12文件放到项目的 resources 目录下:

springboothttps调用(springboot配置https以及http重定向)(3)


三、配置application.properties / application.yml 文件

#ssl证书 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=****** server.ssl.key-store-type=PKCS12 server.ssl.key-alias=tomcat

如果 chrome 不可以访问

springboothttps调用(springboot配置https以及http重定向)(4)

那么在配置里再加一条配置信息

server.ssl.ciphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS_ECDHE_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA SSL_RSA_WITH_RC4_128_SHA

springboothttps调用(springboot配置https以及http重定向)(5)


这时就可以发送 https 请求了

此外因为Spring Boot不支持同时在配置中启动http和https。这个时候可以配置请求重定向,将http请求重定向为https请求。配置如下:

@Configuration public class TomcatConfig { @Bean TomcatServletWebServerfactory tomcatServletWebServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { // TODO Auto-generated method stub Securityconstraint constraint = new SecurityConstraint(); constraint.setUserConstraint("CONFIDENTIAL"); Securitycollection collection = new SecurityCollection(); collection.addPattern("/"); constraint.addCollection(collection); context.addConstraint(constraint); } }; factory.addAdditionalTomcatConnectors(createTomcatConnector()); return factory; } private Connector createTomcatConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); connector.setSecure(false); connector.setRedirectPort(8080); return connector; } }

这里首先配置一个TomcatServletWebServerFactory 然后添加一个Tomcat中的Connector(监听80端口),并将请求转发到8080上去.

猜您喜欢: