1. 生成证书
如果配置了JAVA开发环境,可以使用keytool命令生成证书。我们打开控制台,输入:
keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365
-alias tomcat,指定别名;
-dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN",指定dn,其中CN是"Common Name"的缩写,指定通用名,一般可以使用域名;
OU是"Organizational Unit"的缩写,指定组织单位名;
O是"Organization"的缩写,指定组织名;
L是"Locality"的缩写,指定城市或地区;
ST是"State or Province"的缩写,指州或者省;
C是"Country"的缩写,指国家;
-storetype PKCS12,存储格式为p12;
-keyalg RSA,算法RSA;
-keysize 2048,密钥长度;
-keystore keystore.p12,指定存储的文件;
-validity 365,有效期,这里指定的是365天;
输入后会提示输入密码,这个密码在下面配置文件有用到。
生成后,在对应目录找到证书文件,复制到SpringBoot应用的src/main/resources下。
或者输入下面的命令:
keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore
然后按照提示逐步输入相关参数。
输入密钥库口令:123456
再次输入新口令:123456
您的名字与姓氏是什么?
[Unknown]: kaibowang
您的组织单位名称是什么?
[Unknown]: yuxuelian
您的组织名称是什么?
[Unknown]: yuxuelian
您所在的城市或区域名称是什么?
[Unknown]: chengdu
您所在的省/市/自治区名称是什么?
[Unknown]: chengdushi
该单位的双字母国家/地区代码是什么?
[Unknown]: china
CN=kaibowang, OU=yuxuelian, O=yuxuelian, L=chengdu, ST=chengdushi, C=china是否正确?
[否]: y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore C:\Users\Administrator\.keystore -destkeystore C:\Users\Administrator\.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
2. application.properties配置
在SpringBoot应用的application.properties增加ssl配置:
#https端口号.
server.port=443
#证书的路径.
server.ssl.key-store=classpath:keystore.p12
#证书密码,请修改为您自己证书的密码.
server.ssl.key-store-password=123456(改为之前设置的密码)
#秘钥库类型
server.ssl.keyStoreType=PKCS12
#证书别名
server.ssl.keyAlias=tomcat
此时启动SpringBoot应用,发现可以通过https访问了。
3. 配置http访问
由于之前在配置文件配置了https,因此http要通过代码的形式配置。这个配置也比较简单,添加一个配置类就可以了。
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatConfig {
@Bean
public ServletWebServerFactory servletWebServerFactory() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setPort(80);
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
}
此时启动SpringBoot应用,发现也可以通过http 访问了。