spring boot 中启用 https
2017-06-21 12:27
316 查看
获取证书
https 是加密链接. 是需要证书的. 那么证书从哪里取得呢? 在本地测试的时候, 可以自己生成一个 tomcat 的证书, 可以本地测试用.生成方式配置方式见下面
tool -genkey -v -alias mykey -keyalg RSA -validity 3650 -keystore ./keystore
在yml配置如下
server.port:8443 server.ssl.key-store: classpath:keystore.p12 server.ssl.key-store-password: xxxxx server.ssl.keyStoreType: PKCS12 server.ssl.keyAlias: tomcat
但是本地生成的证书在生产环境是没法用的. 第三方调用的时候是不 OK 的.
于是, 在阿里云上找到了免费的证书申请.
购买后, 会有邮件发到注册邮箱来认证的. 当然, 这里要注意这个免费的证书只能用在一个域名下.
(不知道为什么用公司邮箱和个人邮箱, 这里给出的认证方式不同. )
spring boot 配置
证书生成好之后, 下载之. 然后放在resources目录下. 和 application.properties 并列.阿里云这个下载下来默认是pfx 格式的. 按照下面这样配置就行:
server.ssl.key-store=classpath:1111111.pfx server.ssl.key-store-password=1111111 server.ssl.keyStoreType=PKCS12
因为是生产环境, 需要做 http 自动转到 https. 所以这里不配置端口号.
http 自动转到 https
生产环境上 http 转到 https 是一个很必要的能力. 在 spring boot 的启动类中. 添加如下代码即可 ```package wang.vchen.handling.config; 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.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Auther Vchen * @Description: * @Date: 20:56 2017/6/20. * @Modified: */ @Configuration public class HttpsConfig { @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(){//1 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(httpConnector()); return tomcat; } @Bean public Connector httpConnector(){ Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080);//表示用8080端口来供http访问 connector.setSecure(false); connector.setRedirectPort(8090);//自动重定向到8090端口 return connector; } }
这样就可以实现 HTTPS 了
如果是测试环境的证书,浏览器可能会拦截,说是不安全的,需要将浏览器设置一下。
相关文章推荐
- Spring Boot 揭秘与实战(五) 服务器篇 - Tomcat 启用 HTTPS
- SpringBoot2.0如何启用https协议
- Spring Boot Https SSL 实现
- Spring Boot 实现 HTTPS
- SpringBoot+Nginx+Https下redirect问题
- 使用Spring Boot开发Web项目(二)之添加HTTPS支持
- IntelliJ IDEA 创建spring boot项目报错:Cannot download 'https://start.spring.io'
- 基于SpringBoot项目的https
- spring-boot 添加http自动转向https
- SpringBoot初始教程之Tomcat、Jetty优化以及Https配置(九)
- spring boot / cloud (五) 自签SSL证书以及HTTPS
- SpringBoot启用log4j日志
- spring-boot实现访问http跳转到https端口的方法
- spring boot https --restful接口篇
- Enable HTTPS in Spring Boot
- Spring Boot SSL [https]配置例子
- spring boot 配置https和SSL
- SpringBoot开启https以及http重定向
- spring boot 配置ssl证书实现https
- Spring Boot中启动HTTPS