spring-boot配置ssl证书

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

2、得到ssl证书:方法不惟一,又从网上的大平台下载也能本身生成。本身生成的也写过了spring

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

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

2.在application.properties文件中配置tomcat

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的请求端口(不固定,能够改)springboot

     tomcat.keystore :值得是你证书的路径,由于在根目录下因此就只有文件名app

     password:这是你密钥的密码ide

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

     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认为不安全了