Springboot2.1.5项目配置启用HTTPS
Springboot2.1.5项目配置Https
Springboot2.1.5项目配置启用HTTPS
1.openssl生成证书
找一台linux机器, 利用openssl生成根证书,首先修改openssl.cnf配置文件(默认在/etc/pki/tls目录下)
cp /etc/pki/tls/openssl.cnf /etc/pki/CA
cd /etc/pki/CA
vim openssl.cnf
(1) 修改openssl.cnf
#确保req下存在以下2行(默认第一行是有的,第2行被注释了)
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
#确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
#新增最后一行内容 subjectAltName = @alt_names(前2行默认存在)
#新增 alt_names,注意括号前后的空格,IP.x 的数量可以自己加
注意,此处如果是域名要配置DNS.1 = localhost, 此处是ip所以按上述配置
保存退出.
openssl.cnf中会要求部分文件及目录存在:
mkdir -p {certs,crl,newcerts,private}
touch index.txt
echo 00 > serial
(2) 生成证书并签名
生成ca.key并自签署
openssl req -new -x509 -days 365 -keyout ca.key -out ca.crt -config openssl.cnf
生成server.key
openssl genrsa -out server.key 2048
生成证书签名请求(注意这个Common Name也要在openssl.cnf的DNS.x中配置的)
openssl req -new -key server.key -out server.csr -config openssl.cnf
使用自签署的CA,签署server.scr
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf
server.crt server.key就是web服务器(如nginx)中使用的文件
2.生成keystore
通过keytool -genkey alias tomcat生成的.keystore已经过时了,不推荐
openssl pkcs12 -export -inkey server.key -in server.crt -out tomcat.p12 -name ‘tomcat’
当前目录下会生成一个tomcat.p12文件,即证书文件
3.项目配置测试
目前springboot2.1.5自带的tomcat配置ssl只支持Http11NioProtocol(默认)和Http11Nio2Protocol,Http11AprProtocol不支持,下面以Http11NioProtocol为例介绍
将生成的tomcat.p12文件放到项目路径下
yml配置
# 证书目录 server: ssl: key-store: tomcat.p12 #你之前填好的密码 key-store-password: llspace keyStoreType: PKCS12 keyAlias: tomcat port: 443
配置类
/** * <p>@filename SSLConfig</p> * <p> * <p>@description ssl配置类</p> * * @author llspace * @version 1.0 * @since 2019/6/25 10:00 **/ @Configuration public class SSLConfig { @Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected 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(initHttpConnector()); return tomcat; } /* * 配置默认的http 8080跳转到https 8443 */ private Connector initHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); connector.setSecure(false); connector.setRedirectPort(443); return connector; } }
创建测试访问接口
/** * <p>@filename TestController</p> * <p> * <p>@description 测试类</p> * * @author llspace * @version 1.0 * @since 2019/6/25 10:40 **/ @RestController @RequestMapping("/test") public class TestController { @RequestMapping("/helloHttps") public String helloHttps(){ return "hello https"; } }
4.浏览器端安装证书
将生成的ca.crt安装到浏览器端即可,注意选择安装到受信任的根证书颁发机构
启动项目,浏览器端测试访问
OK, 配置成功!有兴趣的自己动手试试吧!
- Springboot项目使用Nginx 并配置 HTTPS
- Spring Boot 项目在外部容器中运行的配置
- SpringBoot项目配置
- Eclipse安装了SpringSource Tool Suite插件后,编辑SpringBoot项目的yml配置文件仍然没有提示信息的解决办法
- 第二十章:SpringBoot项目中使用WebSocket配置广播式通信
- springBoot环境配置搭建及创建第一个连接数据库项目
- SpringBoot 配置HTTPS
- Springboot项目配置druid数据库连接池,并监控统计功能
- springboot项目打jar包后替换配置文件用java -jar启动时发生的配置出错
- spring boot配置Https单向认证和双向认证
- spring-boot项目搭建及mysql配置实例
- Maven配置Spring Boot项目打包,依赖包到lib目录、配置文件到conf目录
- spring boot 配置 https|ssl
- Intellij IDEA 搭建Spring Boot项目(二)spring-dao的相关配置
- 使用IDEA从零配置springboot项目环境
- Spring Boot项目属性配置
- Spring Boot 多模块项目创建与配置 (一)
- SpringBoot项目连接oracle,mysql的配置,maven项目
- 使用Spring Boot开发Web项目(二)之添加HTTPS支持
- SpringBoot项目创建以及环境配置诠释