商标注册网站查询系统,企业网站建设公司电话,WordPress免费自动采集,辽宁省建设工程信息网官网新网站SpringBoot使用JKS或PKCS12证书实现https
生成JKS类型的证书
可以利用jdk自带的keytool工具来生成证书文件#xff0c; 默认生成的是JKS证书 cmd命令如下: 执行如下命令#xff0c;并按提示填写证书内容#xff0c;最后会生成server.keystore文件
keytool -genkey tomcat…SpringBoot使用JKS或PKCS12证书实现https
生成JKS类型的证书
可以利用jdk自带的keytool工具来生成证书文件 默认生成的是JKS证书 cmd命令如下: 执行如下命令并按提示填写证书内容最后会生成server.keystore文件
keytool -genkey tomcat -keyalg RSA -keystore ./server.keystore在springboot中配置这个JKS证书
需要在application.yml或application.properties配置文件里 配置server.ssl相关配置如下:
server:port: 443 #https默认访问端口servlet:context-path: /demosession:timeout: 30m #默认会话过期时间30分钟encoding:enabled: truecharset: UTF-8force: truetomcat:uri-encoding: UTF-8ssl:# 证书存放的位置key-store: classpath:server.keystore# 证书别名key-alias: tomcat# 证书类型key-store-type: JKS# 证书密码key-store-password: 123456生成PKCS12类型的证书
keytool工具可以将刚刚生成的JKS证书升级为PKCS12类型的证书
PKCS12类型的证书是目前行业标准格式。
升级命令如下执行该命令后会生把之前的证书重命名为server.old.keystore然后生成新的证书文件server.keystore
keytool -importkeystore -srckeystore ./server.keystore -destkeystore ./server.keystore -deststoretype pkcs12在springboot中配置PKCS12证书
需要在application.yml或application.properties配置文件里 配置server.ssl相关配置如下:
server:port: 443 #https默认访问端口servlet:context-path: /demosession:timeout: 30m #默认会话过期时间30分钟encoding:enabled: truecharset: UTF-8force: truetomcat:uri-encoding: UTF-8ssl:# 证书存放的位置key-store: classpath:server.keystore# 证书别名key-alias: tomcat# 证书类型key-store-type: PKCS12# 证书密码key-store-password: 123456配置tomcat连接器实现同时使用https和http访问
需要在springboot中新建一个配置类配置tomcat里的http连接器
代码如下 package cn.test;import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class HttpConnectorConfig {/*** 配置http连接器* 当访问80端口时自动重定向到443端口* 即访问http时自动重定向到https端口* return Connector*/public Connector getHttpConnector(){Connector connector new Connector(org.apache.coyote.http11.Http11NioProtocol);connector.setScheme(http);connector.setSecure(false);connector.setPort(80);connector.setRedirectPort(443);return connector;}Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory(){TomcatServletWebServerFactory tomcat new TomcatServletWebServerFactory(){Overrideprotected void postProcessContext(Context context) {SecurityConstraint securityConstraint new SecurityConstraint();securityConstraint.setUserConstraint(CONFIDENTIAL);SecurityCollection collection new SecurityCollection();collection.addPattern(/*);securityConstraint.addCollection(collection);context.addConstraint(securityConstraint);}};tomcat.addAdditionalTomcatConnectors(getHttpConnector());return tomcat;}}
以上操作配置完成后启动springboot项目
可以观察到控制台已经启用了https和http这2种访问端口
[main] [] o.s.b.w.e.t.TomcatWebServer [TomcatWebServer.java : 220] Tomcat started on port(s): 443 (https) 80 (http) with context path /demo打开浏览器测试
访问 http://localhost/demo/home
浏览器会重定向到 https://localhost/demo/home