SpringBoot配置https

准备证书

  1. 可以去某云服务厂商申请一个免费的。
  2. 可以利用Java自带的JDK管理工具keytool生成一个免费的https证书。
# 进入到%JAVA_HOME%\bin目录,执行命令生成证书
keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048  -keystore tomcathttps.keystore -validity 365
  • genkey 表示要创建一个新的密钥。
  • alias 表示 keystore 的别名。
  • keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。
  • keysize 表示密钥的长度。
  • keystore 表示生成的密钥存放位置。
  • validity 表示密钥的有效时间,单位为天。


    生成https证书.png

引入https

将生成的证书拷贝到项目的resources目录下,在application.properties中进行配置

server.ssl.key-store=classpath:tomcathttps.keystore
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=jichengda
  • key-store 表示密钥文件名
  • key-alias 表示密钥别名
  • key-store-password 密钥库口令
    启动项目,此时如果用http协议访问会提醒
Bad Request
This combination of host and port requires TLS.

请求转发

由于Spring Boot不支持同时启动http和https,通过配置请求转发解决这个问题,当用户发送http协议请求时转发到https上。

@Configuration
public class TomcatConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){
            @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);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }
    private Connector createTomcatConnector() {
        Connector connector = new
                Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8081);
        connector.setSecure(false);
        connector.setRedirectPort(8080);
        return connector;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容