SpringBoot项目两步轻松完成HTTPS配置

SpringBoot项目两步完成HTTPS配置

1.配置文件中添加SSL配置

application.yml文件
# 配置端口
server:
   port: 443
   #生成的证书名字
   ssl: 
      key-store: classpath:证书文件名.pfx	//文件路径,这里我使用了pfx格式并且把SSL证书放到了src/main/resources路径下(classpath:表示在src/main/resources路径)
      #钥库密码
      key-store-password: 证书密码	//证书密码
      key-store-type: PKCS12 		//证书类型	pfx格式对应的PKCS12
application.properties文件
server.port=443	//端口号
server.ssl.key-store=classpath:证书文件名.pfx	//文件路径
server.ssl.key-store-password=证书密码	//证书密码
server.ssl.key-store-type=PKCS12	//证书类型
服务器的证书格式:
  • .DER .CER,文件是二进制格式,只保存证书,不保存私钥。
  • .PEM,一般是文本格式,可保存证书,可保存私钥。
  • .CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。
  • .PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。
  • .JKS,二进制格式,同时包含证书和私钥,一般有密码保护;使用Java提供的密码库。通过Java的Keytool工具,生成
SSL证书一般安装在服务器上,而主流的Web服务软件,通常都基于两种基础密码库:OpenSSLJava
Tomcat、Weblogic、JBoss: .JKS(Tomcat也可以用.pfx格式)
Apache、Nginx: 使用OpenSSL提供的密码库,生成PEMKEYCRT等格式的证书文件。

2.创建HTTP跳转HTTPS配置文件

package cn.com.order.yiting.config;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description ConnectorConfig接口实现
 * @Author W_Messi
 * @CrateTime 2020-04-25 19:31:04
 */

@Configuration
public class ConnectorConfig {

	 
	@Bean
    public ServletWebServerFactory 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(initiateHttpConnector());
        return tomcat;
    }
 
    /**
     * 让我们的应用支持HTTP是个好想法,但是需要重定向到HTTPS,
     * 但是不能同时在application.properties中同时配置两个connector,
     * 所以要以编程的方式配置HTTP connector,然后重定向到HTTPS connector
     * @return Connector
     */
    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80); // http端口
        connector.setSecure(false);
        connector.setRedirectPort(443); // application.properties中配置的https端口
        return connector;
    }

}

参考:

​ 配置参考:https://blog.csdn.net/qq_24641227/article/details/93893941

​ SSL资料参考:https://www.gworg.com/problems/1023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值