1. 程式人生 > >SpringBoot配置HTTPS,並實現HTTP訪問自動轉HTTPS訪問

SpringBoot配置HTTPS,並實現HTTP訪問自動轉HTTPS訪問

這裡說一下為什麼寫這篇文章,因為我也是一個SpringBoot初學者,在配置https的時候遇到了一些坑,根據網上的配置方式,發現一些類已經過時,這裡僅以記錄一下我的配置過程,以供參考.

1.使用jdk自帶的 keytools 建立證書

開啟cmd視窗,輸入如下命令

keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore 

按照提示進行操作

輸入金鑰庫口令:123456
再次輸入新口令:123456
您的名字與姓氏是什麼?
  [Unknown]:  kaibowang
您的組織單位名稱是什麼?
  [Unknown]:  yuxuelian
您的組織名稱是什麼?
  [Unknown]:  yuxuelian
您所在的城市或區域名稱是什麼?
  [Unknown]:  chengdu
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  chengdushi
該單位的雙字母國家/地區程式碼是什麼?
  [Unknown]:  china
CN=kaibowang, OU=yuxuelian, O=yuxuelian, L=chengdu, ST=chengdushi, C=china是否正確?
  [否]:  y

輸入 <tomcat> 的金鑰口令
        (如果和金鑰庫口令相同, 按回車):
再次輸入新口令:

Warning:
JKS 金鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore C:\Users\Administrator\.keystore -destkeystore C:\Users\Administrator\.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。

建立完成後,可在使用者根目錄檢視生成的keystore檔案

2.新建springboot專案,將上一步生成的keystone檔案複製到專案的根目錄,在application.properties新增如下配置

server.port=443
server.ssl.key-store=server.keystore
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS

作者:御雪戀
連結:https://www.jianshu.com/p/8d4aba3b972d
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。

說明一下

這裡將伺服器埠號設定成443埠,即https的預設訪問埠,那麼在進行https訪問的時候可以不帶埠號直接訪問,如果埠被佔用使用

netstat -ano

檢視哪個程序號佔用了埠,使用

tasklist|findstr (檢視到的程序號)
# simple
C:\Users\Administrator>tasklist|findstr 3664
vmware-hostd.exe              3664 Services                   0      5,040 K

開啟工作管理員,殺死佔用程序,或開啟對應的應用程式的設定,關閉監聽
至此 https配置完畢 訪問

https://localhost 檢視是否配置成功

3.http訪問自動轉https訪問

向spring容器中注入兩個Bean,程式碼如下

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

首先 這裡需要使用 TomcatServletWebServerFactory 這個類,網上清一色的都是使用 EmbeddedServletContainerFactory 這個類.
在新版本的SpringBoot中,我發現已近找不到這個類了,幾經週轉,翻閱原始碼,才找到這個類,這也是我為什麼寫這篇文章的初衷.
其次在這裡設定http的監聽埠為80埠,http預設埠,這樣在訪問的時候也可以不用帶上埠號.
完成以上配置後,我們訪問 http://localhost 即可自動跳轉為 https://localhost




轉載:https://www.jianshu.com/p/8d4aba3b972d
 

相關推薦

SpringBoot配置HTTPS,實現HTTP訪問自動HTTPS訪問

這裡說一下為什麼寫這篇文章,因為我也是一個SpringBoot初學者,在配置https的時候遇到了一些坑,根據網上的配置方式,發現一些類已經過時,這裡僅以記錄一下我的配置過程,以供參考. 1.使用jdk自帶的 keytools 建立證書 開啟cmd視窗,輸入如下命令 k

Tomcat 配置http請求自動轉為https請求解決80端口占用問題

第一步.配置Tomcat的https請求,我的這篇部落格記錄了一下相關操作:https://blog.csdn.net/LJX_ahut/article/details/82153895   第二步 修改預設埠 由於http協議的預設埠是80(Tomcat預設配置

Apache 實現ProxyPass轉發URL到Tomcat實現http自動https

 Apache 實現ProxyPass轉發URL到Tomcat  開啟Apache的VirtualHost  在 conf/httpd.conf 下  Include conf/extra/httpd-vhosts.conf   開啟 代理 使apache具備將URL轉

RHEL7 配置iscsi服務端實現客戶端自動開機掛載

page been hang disco portal count term naconda tmpfs 環境:server 172.25.0.11 ——iscsi server iqn:iqn.2016-02.com.example:server0client 172.

Apache配置.htaccess檔案 ,http自動https,隱藏index.php

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{

在windows下apache配置SSL以實現http轉換為https

主要講述在windows下apache配置SSL以實現http轉換為https SSL: SSl是為Http傳輸提供安全的協議,通過證書認證來確保客戶端和網站伺服器之間的資料是安全。也就是說在SSL下http傳輸是安全的,我們成為https. 過程: 步驟一:安裝apache,使其支援SSL,並安裝

Springboot-WebFlux實現http重定向到https

# 1 簡介 `Spring WebFlux`是一個新興的技術,`Spring`團隊把寶都壓在響應式`Reactive`上了,於是推出了全新的`Web`實現。本文不討論響應式程式設計,而是通過例項講解`Springboot WebFlux`如何把`http`重定向到`https`。 ![spring mv

ASP.NET Core 使用 URL Rewrite 中間件實現 HTTP 重定向到 HTTPS

添加引用 傳統 add arch rewrite direct get true configure 在傳統 ASP.NET 程序中,我們可以通過配置 IIS 的“URL 重寫”功能實現將 HTTP 請求重定向為 HTTPS 。但是該方法在 ASP.

手把手教你使用 netlify 實現前端的 自動部署 + HTTPS

前端自動化 用戶 width deploy 開始 沒有 目錄 dbr 域名 隨著開源工具越來越多,特別是nodejs構建微服務器之快,實現前端自動化部署越來越簡單了,有可能【10行js代碼+10行sh腳本+設置github的webhook】就能實現,但是如果你和我一樣,就是

httpshttps的本地測試環境搭建,asp.net結合https的代碼實現,http網站轉換成https網站之後遇到的問題

基本 解密 req with 網址 orm forms 訪問 art 一:什麽是https SSL(Security Socket Layer)全稱是加密套接字協議層,它位於HTTP協議層和TCP協議層之間,用於建立用戶與服務器之間的加密通信,確保所傳遞信息的安全性

前後端分離專案配置Nginx、配httpshttp強制跳https

本篇文章主要解決以下幾個問題: 前後端分離專案如何配置Nginx 配置https協議訪問 開啟http訪問但強制跳轉https訪問 基本的安裝就不多說了,直奔主題。 本文基於ubuntu系統,另外假定有幾個前提條件: 主機地址為192.168

jenkins 整合maven,svn(配置鉤子程式實現提交程式碼自動構建),tomcat實現熱部署(windows+linux分別實現

1 準備工作: (1)執行jenkins的tomcat (2)執行我們專案的tomcat (3)SVN伺服器 jenkins就是一個war包,相信大家都非常熟悉,扔在tomcat  webapp下就能跑,具體操作步驟上網去搜一搜一大把,我們主要是來記錄一下如何實現鉤子程式,實現程式碼的動態部

nginx 訪問http強制跳https

server { listen 80; listen [::]:80; server_name www.test; root /home/zrj/www/zhangrenjie_test; index index.php index.html; #這裡強制

SpringBoot整合MybatisPlus實現分頁查詢

首先https://start.spring.io/下載一個springBoot的demo。   然後增加pomyila依賴,引入以下pom,除了MybatisPlus其他自己分配 <?xml version="1.0" encoding="UTF-8"?> <

【Linux】Ubuntu16.04配置samba服務實現與win10共享資料夾訪問

一、安裝samba 開啟終端,在終端輸入 sudo apt-get install samba sudo apt-get install smbclient 二、設定使用者名稱和密碼 如果你的ubuntu還沒有新增使用者,則先新增一個使用者,我這裡新增一個myShar

[springBoot] Springboot 整合redis實現自定義序列化遇到的問題

當我們使用@Cacheable註解的時候會將返回的物件快取起來,我們會發現預設快取的值是二進位制的,不方便檢視,為此我們自定義序列化配置,改成JSON格式的 配置如下: pom.xml <?xml version="1.0" encoding="UTF-8"?&

程式碼方式配置Log4j實現執行緒級日誌管理 第五部分

文章目錄 一 第三方程式不應僅限於會用 二 同時按日期和檔案大小備份 三 調整ThreadLogger使用複寫的Appender 四 簡單測試下 五 結語 一 第三方程式不應僅限於會用   關於日誌

程式碼方式配置Log4j實現執行緒級日誌管理 第四部分

文章目錄 一 非同步輸出模式 二 增加非同步輸出模式開關 三 重構日誌輸出介面 四 非同步處理執行緒 五 總結及一些其他的建議 一 非同步輸出模式   目前尚剩餘兩個需求,一個是實現日誌的非同步輸出

程式碼方式配置Log4j實現執行緒級日誌管理 第三部分

文章目錄 一 對第二部分的一些補充 二 如何實現執行緒級日誌物件管理 三 實現ThreadLogger 四 重構LogUtil 一 對第二部分的一些補充   第二部分用很簡單的樣例來描述了Logger物件的

程式碼方式配置Log4j實現執行緒級日誌管理 第二部分

文章目錄 一 設計類結構 二 成員設計 三 方法設計 四 實現Logger物件例項化方法 一 設計類結構   第一部分說了兩件事兒: 如何根據配置檔案分析有用的資訊以便對底層結構進行挖掘