如果需要将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标签:Connector,网关,http,请求,证书,connector,https From: https://www.cnblogs.com/0116ct/p/16931296.html
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的端口号。