springboot使用https访问

生成本地证书

  1. 进入本地jdk安装路径下的bin文件夹找到keytool.exe
  2. 在此目录进入cmd 输入命令
    keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore 

     

  3. 按照提示进行操作
    输入密钥库口令:123456
    再次输入新口令:123456
    您的名字与姓氏是什么?
      [Unknown]:  kaibowang
    您的组织单位名称是什么?
      [Unknown]:  yuxuelian
    您的组织名称是什么?
      [Unknown]:  yuxuelian
    您所在的城市或区域名称是什么?
      [Unknown]:  chengdu
    您所在的省/市/自治区名称是什么?
      [Unknown]:  chengdushi
    该单位的双字母国家/地区代码是什么?
      [Unknown]:  china
    CN=kaibowang, OU=yuxuelian, O=yuxuelian, L=chengdu, ST=chengdushi, C=china是否正确?
      [否]:  y
    
    输入 <tomcat> 的密钥口令
            (如果和密钥库口令相同, 按回车):
    再次输入新口令:
    
    Warning:
    JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore C:\Users\Administrator\.keystore -destkeystore C:\Users\Administrator\.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

     

新建springboot项目,将上一步生成的keystone文件复制到项目的根目录,在application.properties添加如下配置

server.port=8888
server.ssl.key-store=server.keystore
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS

http访问自动转https访问

@Configuration
public class HttpsConfig {
    @Bean
    public Connector connector(){
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80);
        connector.setSecure(false);
        connector.setRedirectPort(8888);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){
        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(connector);
        return tomcat;
    }
}

结束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章