SpringBoot配置使用SSL,使用https(单向认证)

1.生成证书,可以使自签名或者从SSL证书授权中心获得的

JDK中keytool是一个证书管理工具,可以生成自签名证书。

我这里是windows系统,打开命令行,执行:

keytool -genkey -alias bitservice -keypass bitservicepwd -keyalg RSA -keysize 1024 -validity 365 -keystore D:/bitservice.keystore -storepass bitservice

参数说明:

keytool 

-genkey 

-alias bitservice(别名) 

-keypass bitservicepwd(别名密码) 

-keyalg RSA(算法) 

-keysize 1024(密钥长度) 

-validity 365(有效期,天单位) 

-keystore D:/bitservice.keystore(指定生成证书的位置和证书名称) 

-storepass bitservicepwd(获取keystore信息的密码)

命令执行完成后,窗口下方有个建议“迁移到行业标准格式PKCS12”,只需要执行它建议的命令即可。

图示:

图示

此时证书已在D盘根目录生成,文件名称“bitservice.keystore”

2.SpringBoot配置SSL

1. 把bitservice.keystore拷贝到项目的src/main/resources下,和application.properties同级

2. 修改application.properties文件,添加如下内容:

server.port=443
server.ssl.key-store: src/main/resources/bitservice.keystore
server.ssl.key-store-password: bitservice

3. 配置同时支持http和https访问项目,在启动类中添加如下内容:

@Bean
    public EmbeddedServletContainerFactory servletContainer() {

        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {

            @Override
            protected void postProcessContext(Context context) { //org.apache.catalina.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;
    }

    private Connector initiateHttpConnector() {

        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80);
        connector.setSecure(false);
        connector.setRedirectPort(443);
        return connector;
    }

到此整个配置完成,启动项目进行测试,在浏览器地址栏输入http://127.0.0.1/和https://127.0.0.1/均可访问(http会自动跳转到https)

猜你喜欢

转载自blog.csdn.net/aiyo92/article/details/87863426