概述
SSL是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。SSL协议位于 TCP/IP 协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocl),建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装,压缩,加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),建立在SSL记录协议之上,用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。
在基于B/S的Web 应用中,是通过 https 来实现 SSL 的,HTTPS 以安全为目标的 HTTP通道,在http下加入ssl层,https的安全基础是 SSL。
Spring Boot配置SSL的步骤:
1、生成证书。可以从 SSL 证书授权中心获得,也可以自授权证书生成。
在jdk或者jre中有一个 keytool 的工具,它是一个证书管理工具,可以用来生成自签名的证书。在配置好环境变量的电脑中,打开命令行,输入:keytool -genkey -alias tomcat,填写基本信息,这时在当前目录下会生成一个.keystore 文件。这就是我们需要的证书文件。
2、配置SSL
将.keystore 文件复制到项目的根目录,然后在 application.properties 中配置以下信息:
server.port=8443
server.ssl.key-store=.keystore
server.ssl.key-password=
server.ssl.key-store-type=JKS
server.ssl.key-alias=tomcat
3、http 转向 https,需要配置 TomcatEmbeddedServletContainerFactory,并添加 Tomcat 的 connector 来实现。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@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(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
最后
以上就是生动百褶裙为你收集整理的Spring Boot tomcat配置SSL的全部内容,希望文章能够帮你解决Spring Boot tomcat配置SSL所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复