一、使用Java的keytool.exe程序生成本机的TLS许可
找到Java的jdk目录进入bin
默认安装路径C:\Program Files\Java\jdk1.8.0_91\bin
进入命令面板,在bin的路径栏中输入cmd敲击回车即可
使用keytool
keytool -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -keystore ./tomcat_https.keystore -storepass 123456
keytool命令的参数:
-alias 别名
-keypass 指定生成密钥的密码
-keyalg 指定密钥使用的加密算法(如 RSA)
-keysize 密钥大小
-validity 过期时间,单位天
-keystore 指定存储密钥的密钥库的生成路径、名称
-storepass 指定访问密钥库的密码
填写证书的基本信息
随意填写~~~
填写完成输入y确定并敲击回车键,即可在当前目录下 生成一份证书
二、配置TomCat
修改tomcat的配置文件
找到配置文件并用笔记本或其他文本编辑器打开
添加证书配置
在tomcat的配置文件中找到图中代码
添加一个 Connector
<Connector port="访问端口" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="证书地址" keystorePass="证书访问密码" />
验证是否成功
启动tomcat
使用https访问端口8443 https://localhost:8443/,若出现下图选择高级选项再点击接受即可
出现这个界面说明配置成功
三、配置SpringBoot的HTTPS访问
添加证书
将Java生成的证书拷贝一份到springboot的资源文件包下
配置SptingBoot配置文件的证书信息
根据自己的配置文件选择对应的配置即可二选一
properties配置文件
server.ssl.protocol=TLS
server.ssl.key-store=src/main/resources/tomcat_https.keystore #证书地址
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456 #访问密码
server.ssl.key-store-type=JKS
yml配置文件
ssl:
protocol: TLS
key-store: src/main/resources/tomcat_https.keystore #证书地址
key-alias: tomcat
enabled: true
key-store-password: 123456 #访问密码
key-store-type: JKS
启动SpringBoot
访问接口请求成功即可
四、tomcat配置http自动跳转https
找到tomcat的web.xml配置文件
添加security-constraint(安全约束)
在配置文件的最下面添加security-constraint标签
security-constraint的内容为:
<!-- 强制使用https,http请求会自动转为https-->
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<!--配置网站支持https,/* 表示全部请求都走https, transport-guarantee 标签设置为 CONFIDENTIAL以便使应用支持 SSL。 如果需要关闭 SSL ,将 CONFIDENTIAL 改为 NONE 即可 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
注意事项
开启了安全约束后service中的redirectPort参数要对应上
如:http我配置了个8080,https配置的是8443,开启安全约束后8080的配置应该为
redirectPort的值是https端口的,否则服务无法跳转,就会报错
若是对应上那么我们访问http://localhost:8080/就会自动转到https://localhost:8443/这个地址