springBoot开启htpps端口
说明:两种方式,第二种是老的方式
1. jks证书
1.1 生成SSL证书
- 切换到
JAVA_HOME/bin
目录下面 - 执行命令
keytool -genkey -alias test -keypass 555555 -keyalg RSA -sigalg sha256withrsa -keysize 1024 -validity 3650 -keystore d:/test.jks -storepass 555555
- 参数说明
keytool -genkey -alias test(别名)
-keypass 123123(私钥密码)
-keyalg RSA(算法)
-sigalg sha256withrsa(算法小类)
-keysize 1024(密钥长度)
-validity 3650(有效期)
-keystore d:/test.jks(生成路径)
-storepass 123123(主密码)
- 其他步骤
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: xxx
您的组织单位名称是什么?
[Unknown]: xxx
您的组织名称是什么?
[Unknown]: xxx
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: china
CN=xxx, OU=xxx, O=xxx, L=beijing, ST=beijing, C=china是否正确?
[否]: y
1.2 将生成的test.jks拷贝到项目resources目录下
1.3 修改项目配置
# 添加SSL后,默认端口为8888为Https
server.port=8888
# SSL配置
server.ssl.key-store=classpath:twtKey.jks
server.ssl.key-store-type=jks
server.ssl.key-store-password=twtKey
1.3 启动文件添加以下代码
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
return tomcat;
}
private Connector createHTTPConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8080);
connector.setRedirectPort(8888);
return connector;
}
2. p12 证书
2.1 生成SSL证书
MAC系统:keytool -genkey -alias your.alias(别名随便起) -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 validity 3650
Windows系统,请在JDK目录下找到keytool.exe
keytool -genkey -alias your.alias(别名随便起) -keypass yourpass1 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:/keys/keystore.keystore -storepass yourpass2
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: xxx
您的组织单位名称是什么?
[Unknown]: xxx
您的组织名称是什么?
[Unknown]: xxx
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: china
CN=xxx, OU=xxx, O=xxx, L=beijing, ST=beijing, C=china是否正确?
[否]: y
请正确设置上面的参数
2.2 将生成的keystore.p12或者keystore.keystore拷贝到项目resources目录下
2.3. 配置入口文件
package com.hollysys.tn;
import org.apache.catalina.connector.Connector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run( Application.class, args );
}
/**
* 开启多端口号,并支持http和https
*/
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
return tomcat;
}
private Connector createHTTPConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(85);
connector.setRedirectPort(8080);
return connector;
}
}
以上代码实现的端口分别是 https:8080 , http:85
2.4. sppliction.yml 配置
server:
port: 8080
ssl:
key-store: classpath:keystore.p12
key-store-password: hollysys
keyAlias: tomcat
keyStoreType: PKCS12
运行起来,打开浏览器:https://localhost:8080,会出现证书安全提示,因为是自已生成未认证的证书,所以不用理会