http与https

1.JDK自带数字证书生成工具keytool

生成数字证书命令如下:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore tang.sks -validity 365

* -genkey 表示要创建一个新的秘钥

* -alias 表示keystore别名

* -keyalg 表示使用的加密算法是RSA,一种非对称加密算法

* -keysize表示秘钥长度

* -validity 表示秘钥有效时间(天)

然后在application.properties中进行配置

server.ssl.key-store=tang.sks

server.ssl.key-alias=tomcathttps

server.ssl.key-store-password=123456

文件名称、别名(alias)、密码要与设置时一致,文件路径默认项目根目录。

2.tomcat http重定向https

代码如下所示:

@Configuration
public class TomcatConfig {

    @Value("${server.port}")
    private int port;

    @Value("${server.redirectport}")
    private int redirectport;
    @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;
    }
    public Connector createTomcatConnector(){
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(redirectport);
        connector.setSecure(false);
        connector.setRedirectPort(port);
        LogUtil.debug("redirectport="+redirectport);
        LogUtil.debug("port="+port);
        return connector;
    }
}

当用http请求访问redirectport端口时,会重定向到port端口。

posted @ 2020-04-24 07:25  DreamCatt  阅读(73)  评论(0)    收藏  举报