SpringBoot2.0項目配置https訪問

要使用https首先我們需要有證書,由於我們自己生成的證書會被多數瀏覽器不信任,所以我們採用申請的免費證書來演示。

一、先來說一說如何申請證書吧

1.登錄騰訊雲,選擇雲產品——>SSL證書管理

2.點擊申請證書,選擇亞洲誠信,按要求填寫完信息,提交後大約十分鐘,證書會發到你的郵箱

二、現在我們來爲項目配置https

1.下載你所需要類型的證書,並將其放入項目resources目錄下

Windows IIS下的數字證書格式一般爲.pfx
Java tomcat 下的數字證書格式一般爲.jks或.store
Apache和nginx一般是.pem

2.打開application.properties配置文件,添加如下配置

#端口號
server.port=443
#你生成的證書名字
server.ssl.key-store=classpath:放在resources下證書的名字
#密鑰庫密碼
server.ssl.key-store-password=申請證書時添加的祕鑰庫口令
server.ssl.keyStoreType=JKS

這樣我們的https就配置好了,將項目放到申請證書時填入的域名解析到的服務器上進行測試

三、當用戶訪問http端口的時候,我們需要重定向到https

在啓動類中添加如下兩個方法,更改tomcat配置

@Bean
    public ServletWebServerFactory servletContainer() {

    	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(initiateHttpConnector());
        return tomcat;
    }

    /**
     * 讓我們的應用支持HTTP是個好想法,但是需要重定向到HTTPS,
     * 但是不能同時在application.properties中同時配置兩個connector,
     * 所以要以編程的方式配置HTTP connector,然後重定向到HTTPS connector
     * @return Connector
     */
    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(80); // http端口
        connector.setSecure(false);
        connector.setRedirectPort(443); // application.properties中配置的https端口
        return connector;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章