springCloud将http请求网关更改为https请求

如果需要将http请求换成https请求,大致需要三步。

第一步:生成证书。网上有很多通过阿里云生成证书的教程。也有通过JDK生成证书。在jdk目录打开命令窗口,执行一下命令:

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

第二部:将生成的证书复制到网关gateway目录下,然后配置证书参数。注意事项:项目启动时会报DerInputStream.getLength(): lengthTag=111, too big.错误。这是需要将证书所在目录不被maven打包。参考这边博文。https://blog.csdn.net/tengdazhang770960436/article/details/113506940  将证书目录配置在pom文件中。

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>



<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<!-- 过滤后缀为pkcs12、jks的证书文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>cer</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>

</plugins>
</build>

最后如果需要使http请求也能访问则需要在gateway的启动项中加上转发代码,代码如下。

 

 

  @Bean
public ServletWebServerFactory servletContainer() {
Object object = new Object(this);
object.addAdditionalTomcatConnectors(new Connector[] { httpConnector() });
return (ServletWebServerFactory)object;
}

@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(Integer.valueOf(this.httpPort).intValue());
connector.setSecure(false);
connector.setRedirectPort(Integer.valueOf(this.serverPort).intValue());
return connector;
}



其中httpPort参数为http请求过来的端口号,serverPort为转发到https的端口号。
posted on 2022-11-28 08:59  芒果汪  阅读(1255)  评论(0)    收藏  举报