Tomcat8.5配置https和SpringBoot配置https

Tomcat8.5配置https

第一步用JDK的keytools工具生成密钥文件

C:\Users\Administrator>D:\Java\jdk1.8.0_201\bin\keytool.exe -genkeypair -alias "
tomcat" -keyalg "RSA" -keystore "F:\tomcat.keystore" -validity 365

在这里插入图片描述
会出现如下提示:

JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore G:\tomcat
.keystore -destkeystore G:\tomcat.keystore -deststoretype pkcs12" 迁移到行业标准
格式 PKCS12。

可以选择使用如上提示的命令把密钥转换为PKCS12格式的,可以选择不转换,一般没有区别。
在这里插入图片描述

第二步 配置tomcat8.5

在这里插入图片描述
打开server.xml配置文件增加如下配置:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" 
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="E:\tomcat.keystore"  
               keystorePass="123456"
               >
    </Connector>

重启Tomcat

用https访问站点

https协议已被配置为443端口
访问站点可以省略端口:
https://localhost
http依然可以用
http://localhost:8080
在这里插入图片描述
在这里插入图片描述
因为我的443端口被其它程序占用了,出现了403错误,所以我是把https的端口改为了9443,这个具体要视具体情况设置,最好还是用443端口。

> netstat -ano | findstr "443"

在这里插入图片描述
在这里插入图片描述


SpringBoot配置https

第一步 配置application文件

(使用之前生成的密钥文件)

server:
  port: 9443
  ssl:
    key-store: E:\tomcat.keystore
    key-store-password: 123456
    key-alias: tomcat
    key-store-type: PKCS12

这样就可以使用https访问站点了。

http转https请求访问

在应用启动类加上如下代码即可。

    @Bean
    public Connector connector(){
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80);
        connector.setSecure(false);
        connector.setRedirectPort(9443);
        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;
    }

在使用http访问站点时会自动转换为https.
注意端口的配置和80、443的默认访问。
在这里插入图片描述

发布了48 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wangxudongx/article/details/89534071