spring-boot配置ssl证书

一。首先我们要先有一个简单的spring-boot项目:原先已经写过一篇创建spring-boot的文章了

二、获得ssl证书:方法不唯一,又从网上的大平台下载也能自己生成。自己生成的也写过了

三、在spring-boot项目中配置。配置分四步。

1.将得到的ssl证书放在项目的根目录下。如图:

2.在application.properties文件中配置

server.port=8443
server.ssl.key-store=tomcat.keystore
server.ssl.key-store-password=tomcat
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=tomcat

说明下:

     8443:指的是你https的请求端口(不固定,可以改)

     tomcat.keystore :值得是你证书的路径,因为在根目录下所以就只有文件名

     password:这是你密钥的密码

     storeType:这是你ssl证书的标准(还有一种PKCS12)

     keyAlias:是你密钥库的密码

注:password最好和keyAlias保持一致,不然出错我也没办法,谁有解决方法麻烦告知我下。

配置好后,启动你的spring-boot就可以看效果了。

看到这不要慌,点击高级。

就成功访问到了。

其实这就已经好了,只是chrome还是提示证书不安全,是因为我用的证书是我自己生成的它是不认的。Chrome只认大平台颁发的。

上面就是使用ssl证书,接下来说说,如何让用户请求http:8080端口然后自动跳转到https的8443端口。

想要让8080端口的请求自动跳转到https:8443端口的话我们要怎么搞?

思路是这样的:

首先我们得知道8080端口被请求了,所以我们得监听8080端口得到用户的请求。那我们拿到了用户的请求又怎么才能跳转到我们指定的端口呢?

有些同学应该已经有思路了~~重定向。

 但是在springboot就很简单了。

在你的启动类中加入如下代码就ok了:

/**
     * http重定向到https
     * @return
     */
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = 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);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

@Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8443);
        return connector;
    }

把段代码加上就可以直接启动了。是不是简单粗暴?对这两段代码不清楚?嘿嘿我也不清楚,等我研究下就发文章并把链接更新到这个文章上。不过现在就已经实现了跳转,当然如果你又强迫症可以用大平台的证书就不会被chrome认为不安全了

猜你喜欢

转载自blog.csdn.net/K_Y_Lee/article/details/89513963