springboot怎么配置http跳转https

SSL是一种安全协议,用于确保网络通信的安全和数据完整性,它会在网络传输层对网络连接进行加密。

例:cas 的单点登陆就用到了SSL

一、安全证书的生成

1、可以使用jdk自带的证书生成工具,jdk自带一个叫keytool的证书管理工具,可以用它来实现签名的证书。

SpringBoot如何配置HTTP跳转至HTTPS

2、先配置好基本的java环境,ctrl+r 输入cmd ,进入java 的目录

3、例:生成一个别名叫tomcat 的证书 先使用命令进入jdk的bin 这里的密码是123456

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456

4、获取一个tomcat.keystore的文件,将这个文件放到项目的目录中

二、配置SSL

1、编辑application.properties这个文件

package com.example;


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.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;

import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;

import org.springframework.context.annotation.Bean;


@SpringBootApplication
public class SpringBootHttpsApplication {

public static void main(String[] args) {
SpringApplication.run(SpringBootHttpsApplication.class, args);

}
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();

constraint.setUserConstraint("
CONFIDENTIAL"
);

SecurityCollection collection = new SecurityCollection();

collection.addPattern("
/*"
);

constraint.addCollection(collection);

context.addConstraint(constraint);

}
};

tomcat.addAdditionalTomcatConnectors(httpConnector());

return tomcat;

}

@Bean
public Connector httpConnector() {
Connector connector = new Connector("
org.apache.coyote.http11.Http11NioProtocol"
);

connector.setScheme("
http"
);

//Connector监听的http的端口号
connector.setPort(8080);

connector.setSecure(false);

//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(8443);

return connector;

}

} 三、测试使用

1、查看启动信息

2、访问地址localhost:8080/AmazeUI-2.7.2/login.html 我自定义了一个html网页,它已经转向到了8443端口

3、浏览器的地址栏中显示不安全:因为这个证书是不收信任的,传统一般都企业都是需要购买此证书的



一、背景介绍
随着互联网的蓬勃发展,网站安全问题也变得日益重要。而HTTPS协议是当前网络上最为流行的安全协议之一,能够确保网络通信的安全性、保密性和完整性。因此,很多网站都开始使用HTTPS协议来保障数据安全。本文将介绍如何使用SpringBoot配置HTTP跳转至HTTPS。
二、生成SSL证书
在配置HTTPS之前,需要先生成SSL证书。可以通过一些免费的证书颁发机构,如Let's Encrypt或CloudFlare等,为网站生成SSL证书。若自己搭建了CA,也可以使用它来生成证书。在证书颁发机构的官网上,提供了详细的教程,可以根据需要自行查询相关内容。
三、配置HTTPS
使用SpringBoot提供的EmbeddedServletContainerFactory以及HttpServer或者Undertow等容器,可以轻松地实现HTTPS配置。在src/main/resources目录下,创建application.yml(或者application.properties)文件,在其中进行如下配置:
server:
port: 443
ssl:
enabled: true
key-store: classpath:sslCertificate/xxx.jks
key-store-password: xxx
key-alias: xxx
说明:
1. port:配置端口号为443,该端口默认使用HTTPS协议;
2. ssl.enabled:配置是否开启HTTPS;
3. ssl.key-store:配置SSL证书路径;
4. ssl.key-store-password:配置SSL证书的密码;
5. ssl.key-alias:配置SSL证书的别名。
配置完毕后,可以启动SpringBoot应用程序,就能够使用HTTPS进行访问了。
四、HTTP跳转至HTTPS
为了提高网站的安全性,还需要将HTTP请求重定向至HTTPS请求。这里使用SpringBoot提供的WebMvcConfigurerAdapter来实现HTTP跳转至HTTPS。在SpringBoot启动类上添加如下代码:
@Configuration
public class WebSecurityConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HttpsRedirectInterceptor());
}
}
InterceptorRegistry是SpringBoot提供的拦截器注册中心,HttpRedirectInterceptor类用来重定向HTTP请求至HTTPS请求。在HttpRedirectInterceptor中添加如下代码:
public class HttpsRedirectInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (!request.isSecure()) {
String redirectUrl = request.getServerName() + \":\" + request.getServerPort() + request.getContextPath() + request.getServletPath();
response.sendRedirect(\"https://\" + redirectUrl);
return false;
}
return true;
}
}
Interceptor是SpringBoot提供的拦截器接口,preHandle方法用来处理拦截请求。在拦截器中判断当前请求是否是HTTP请求,如果是则获取重定向地址,并将其重定向至HTTPS请求。
五、测试
至此,HTTP跳转至HTTPS的配置已完成。在浏览器中访问网站,会发现所有请求都已被重定向至HTTPS请求。同时,浏览器地址栏中已显示网站已使用HTTPS协议进行访问,证明配置成功。
六、兼容性
在实际项目中使用HTTPS协议时,需要注意兼容性问题。在较老的浏览器中,对于不支持SNI扩展的浏览器,会出现SSL证书错误问题。此时可以通过为网站配置专门的IP地址来解决问题。
七、总结
本文介绍了如何使用SpringBoot配置HTTP跳转至HTTPS,方便了网站对数据进行加密保护。同时,也提醒了兼容性问题需要注意,做好SSL证书的备份和更新工作。以此来保证网站的数据安全和用户的使用体验。