发布于 

在Spring Boot项目中使用https(jks)

SpringBoot配置HTTPS

在工作中时长会遇到配置https,SpringBoot自带的是tomcat服务器一般使用的.jks文件配置SSL加密。

过程中会用到两个工具:OpenSSL,Keytool工具。

OpenSSL:下载地址:http://slproweb.com/products/Win32OpenSSL.html

keytool工具,这是jdk自带的工具,在jdk的/bin目录下可以找到。

自己生成CSR

https供应商不会直接提供.jks文件。所以,我们就需要将加密文件转换成所需要的jks文件。

  1. 解压已下载的证书压缩包,获得“xxx.pem”文件和xxx.key文件

“server.pem”文件包括两段证书代码“—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,分别为服务器证书和中级CA证书。

  1. 使用OpenSSL工具,将pem格式证书转换为PFX格式证书,得到“server.pfx”文件。
    找到openssl的bin目录,找到openssl.exe文件,单击右键以管理员身份运行,打开命令行,输入命令:
1
pkcs12 -export -out D:\xxx.pfx -in D:\xxx.pem -inkey D:\xxx.key

按照要求输入两次密码,这时在d盘生成了xxx.pfx文件
请牢记此处输入的PFX证书密码。后续设置JKS密码需要与此处设置的PFX密码保持一致,否则可能会导致Tomcat启动失败。

  1. 使用Keytool工具,将PFX格式证书文件转换成JKS格式,得到“xxx.jks”文件。
    1
    keytool -importkeystore -srckeystore D:\xxx.pfx -destkeystore D:\xxx.jks -srcstoretype PKCS12 -deststoretype JKS
    按照提示输入2次JKS证书密码

第三次提示输入源密钥库口令:
输入生成xxx.pfx中设置PFX证书密码

查看D盘下是否生成 xxx.jks

生成完成后,新建一个“keystorePass.txt”文件,将JKS的密码保存在该文件中。

在SpringBoot中配置

将xxx.jks放入resources文件夹下

1
2
3
4
5
6
7
8
9
10
#配置jks存放位置
server.ssl.key-store=classpath:xxx.jks
#https端口号
server.port=8090
#是否启用SSL证书
server.ssl.enabled=true
#密钥库密码
server.ssl.key-store-password=jks密码
#密钥库类型(JKS类型)
server.ssl.key-store-type=JKS

启动测试

同时配置http和https都能访问

新加配置

1
2
#http端口号
http.port=18092

在SpringBoot启动类中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 获取配置端口
@Value("${http.port}")
private Integer httpPort;

@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
// 添加http
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}

/**
* 配置http
*
* @return connector
*/
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(httpPort);
return connector;
}

本站由 @binvv 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。