Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求

时间:2021-02-16 22:19:23

  SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

1.生成证书

  使用JDK的bin目录下的keytool生成,关于keytool简单使用方法如下:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

这里只研究其生成证书的方法,生成证书的命令是-genkey,如下:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

上面也都解释了每个参数的意思,下面研究其生成:

keytool.exe -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore G:/keystore.p12 -validity 3650

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

  注意:上面的名字与姓氏应该输入的是域名,其他密码需要输入,而且需要记住,其他地区信息可以不写。

代码此将生成名为keystore.p12的PKCS12密钥库文件,证书别名为tomcat。

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

2.Springboot中使用上面的证书

将上面的证书复制到项目中,我是放在项目 根路径,如下:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

配置application.properties使用SSL:

############################################################
#
# HTTPS相关配置
#
############################################################
server.ssl.key-store:keystore.p12
server.ssl.key-store-password: 111222
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat

  当然可以以     ver.ssl.key-store=G:/keystore.p12  的方式指定证书位置。

启动测试:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

3.在独立的tomcat中使用SSL配置https访问

  这个需要重新生成key,也就是上面的key在独立的tomcat中会报错。

1.再次生成key:

keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "g:\tomcat.keystore"

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

2.tomcat中server.xml配置SSL访问

    <!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the BIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="G:/tomcat.keystore"
keystorePass="111222" />

3.启动访问测试:

https访问:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

 http访问:

Springboot 配置 ssl 实现HTTPS 请求  & Tomcat配置SSL支持https请求

4.http的默认端口是80,https默认的端口是443;接下来我们配置tomcat只支持https访问

将http端口请求注释掉即可。

  <!--<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"/>-->
<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>-->