下载证书
- 在阿里云中找到SSL证书管理 找到自己的证书 点击下载
- 解压后有两个文件
生成JKS文件
- 找到你的JDK的bin目录
- 进入命令操作界面
- 运行
keytool -importkeystore -srckeystore D:\2610092_dzlianhu.com.pfx -destkeystore xx.jks -srcstoretype PKCS12 -deststoretype JKS
- -srckeystore:下载的证书中pfx的路径
- -destkeystore: 需要生成的jks文件名
- deststoretype : 生成的类型 用JKS即可
- 运行之后,需要输入口令 输入3次 都输入下载的证书中的密码即可,还会生成一个别名
集成到项目中
- 把生成的JKS文件上传到项目中,放在resources文件夹下
- yml中添加配置
server:
port: 443
ssl:
key-store: classpath:xxx.jks
key-store-password: //下载的证书中有一个密码
key-store-type: JKS
key-alias: alias
- 启动文件中添加配置
/**
* http重定向到https
* @return
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(8080);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
异常
java.io.IOException: Invalid keystore format
原因: maven-resources-plugin 在拷贝resources 文件时进行 encoding 会“误伤二进制文件”导致拷贝到classes下的文件发生了变化.
解决办法:在pom文件中添加插件(注意清理编译缓存)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<!--这里是文件后缀-->
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>