欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot配置Https訪問的詳細步驟

 更新時間:2024年02月01日 09:50:21   作者:好漢不吃草  
HTTP(Hypertext transfer protocal)是一種詳細規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間相互通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議,這篇文章主要介紹了SpringBoot配置Https訪問的詳細步驟,需要的朋友可以參考下

一、Https協(xié)議

  • HTTP(Hypertext transfer protocal)是一種詳細規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間相互通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。
  • HTTPS(Hypertext transfer protocal over Secure Socket Layer)是以安全為目標(biāo)的http通道,https的安全基礎(chǔ)是ssl,因此加密的詳細內(nèi)容就需要ssl。https協(xié)議需要到ca申請證書(一般免費的證書很少)。
  • http是超文本傳輸協(xié)議,信息是明文傳輸?shù)模╤ttp協(xié)議是不安全的,黑客可以在用戶和服務(wù)器之間設(shè)置攔截器竊取傳輸?shù)膬?nèi)容。也可以偽造用戶提交的表單向服務(wù)器發(fā)出請求,從而獲取到服務(wù)器的響應(yīng))。https則是具有安全性的ssl加密傳輸協(xié)議,http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

超文本傳輸安全協(xié)議(Https,也被稱作HTTP over TLS, HTTP over SSL或者HTTP Secure)是一種網(wǎng)絡(luò)安全的傳輸協(xié)議,SSL(Secure Socket Layer,安全套接字層),TLS(Transport Layer Security,傳輸層安全協(xié)議),HTTPS開發(fā)的主要目的,是提供對網(wǎng)絡(luò)服務(wù)器的認證,保證交換信息的機密性和完整性。

SSL是位于可靠的面向連接的網(wǎng)絡(luò)層協(xié)議和應(yīng)用層協(xié)議之間的一種協(xié)議。SSL通過相互認證、使用數(shù)字簽名保證完整性、使用加密確私密性,以實現(xiàn)客戶端和服務(wù)器之間的安全通訊。該協(xié)議由兩層組成:SSL加密協(xié)議和SSL握手協(xié)議。SSL的核心概念:加密算法,數(shù)字證書,CA。
TLS用于確保兩個通用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成:TLS記錄協(xié)議和TLS握手協(xié)議(TLS是傳輸層加密協(xié)議,它的前身是SSL協(xié)議,如果沒有特殊要求,可以簡單理解為TLS和SSL都屬于同一協(xié)議)。

1.1 TLS、SSL加密算法

加密算法嚴(yán)格來說屬于編碼學(xué)(密碼編碼學(xué)),編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程,解碼是編碼的逆過程(對應(yīng)密碼學(xué)中的解密)。加密算法主要分為兩類,對稱加密算法和非對稱加密算法。

  • 在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這一個密鑰進行加密和解密,這就要求解密方事先知道加密密鑰。

  • 非對稱加密算法需要兩個密鑰,公開密鑰和私有密鑰,公開密鑰與私有密鑰是一對,如果用公開密鑰進行數(shù)據(jù)加密,只有用對應(yīng)的私有密鑰才能解密,服務(wù)器端發(fā)送加密鎖給客戶端,公開密鑰需要定期更換。

身份認證是建立每一個TLS連接不可或缺的部分,比如你有可能跟任何一方建立一個加密的通道,包括攻擊者,除非我們確保通信的,在開始加密通道之前。服務(wù)端是我們可以信任的,否則所有的加密(保密)工作都沒有任何作用,而身份認證的方式就是通過證書以數(shù)字方式簽名的聲明,它將公鑰與持有相應(yīng)私鑰的主體(個人、設(shè)備或服務(wù))身份綁定在一起,通過在證書上簽名,CA可以核實與證書上公鑰相對應(yīng)的私鑰為證書所指定的主體所擁有??蛻舳撕头?wù)器首先必須建立連接和交換參數(shù),這個過程叫握手。

1.2 OpenSSL簽發(fā)證書

OpenSSL是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其他目的使用。通過在一定范圍內(nèi)部署一臺CA(Certificate Authority)服務(wù)器,可以實現(xiàn)局域網(wǎng)內(nèi)的證書認證和授權(quán),保證數(shù)據(jù)傳輸?shù)陌踩裕部梢酝ㄟ^具體的部署實踐,了解國際上大型CA機構(gòu)的工作原理,為企業(yè)級的證書管理提供知識積累。

使用centos7簽發(fā)證書流程如下:

簽發(fā)CA根證書

1.生成CA密鑰對(密鑰對長度2048字節(jié))
openssl genrsa -out /usr/local/srv/ftp/cas/cakey.pem 2048 RSA

2.生成根證書簽發(fā)申請(證書訪問時已域名出現(xiàn))
openssl req -new -key /usr/local/srv/ftp/cas/cakey.pem -out /usr/local/srv/ftp/cas/cacert.csr -subj /CN=cas.com

3.根證書簽發(fā)
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey /usr/local/srv/ftp/cas/cakey.pem -in /usr/local/srv/ftp/cas/cacert.csr -out /usr/local/srv/ftp/cas/ca.cer

簽發(fā)服務(wù)器證書

1.生成服務(wù)器私鑰
openssl genrsa -aes256 -out /usr/local/srv/ftp/cas/server/server-key.pem 2048

2.生成服務(wù)器證書簽發(fā)申請
openssl req -new -key /usr/local/srv/ftp/cas/server/server-key.pem -out /usr/local/srv/ftp/cas/server/server.csr -subj /CN=cas.com

3.生成服務(wù)器證書
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA /usr/local/srv/ftp/cas/ca.cer -CAkey /usr/local/srv/ftp/cas/cakey.pem -CAserial /usr/local/srv/ftp/cas/server/ca.srl -CAcreateserial -in /usr/local/srv/ftp/cas/server/server.csr -out /usr/local/srv/ftp/cas/server/server.cer

簽發(fā)客戶端證書

1.生成客戶端私鑰
openssl genrsa -aes256 -out /usr/local/srv/ftp/cas/client/client-key.pem 2048

2.生成客戶端證書申請
openssl req -new -key /usr/local/srv/ftp/cas/client/client-key.pem -out /usr/local/srv/ftp/cas/client/client.csr -subj /CN=cas.com

3.生成客戶端簽發(fā)證書
openssl x509 -req -days 365 -sha1 -CA /usr/local/srv/ftp/cas/ca.cer -CAkey /usr/local/srv/ftp/cas/cakey.pem -CAserial /usr/local/srv/ftp/cas/server/ca.srl -in /usr/local/srv/ftp/cas/client/client.csr -out /usr/local/srv/ftp/cas/client/client.cer

生成Java證書(證書轉(zhuǎn)換)

1.生成客戶端證書
openssl pkcs12 -export -clcerts -name cas-client -inkey /usr/local/srv/ftp/cas/client/client-key.pem -in /usr/local/srv/ftp/cas/client/client.cer -out /usr/local/srv/ftp/cas/client/client.p12

2.生成服務(wù)器證書
openssl pkcs12 -export -clcerts -name cas-server -inkey /usr/local/srv/ftp/cas/server/server-key.pem -in /usr/local/srv/ftp/cas/server/server.cer -out /usr/local/srv/ftp/cas/server/server.p12

3.服務(wù)器證書導(dǎo)入本機受信任證書
keytool -importcert -trustcacerts -alias cas.com -file /usr/local/srv/ftp/cas/ca.cer -keystore /usr/local/tomcat/ca-trust.p12

4.查看所有證書信息
keytool -list -keystore /usr/local/srv/ftp/cas/client/client.p12 -storetype pkcs12 -v

二、SpringBoot配置Https

在Tomcat容器或是在SpringBoot項目中配置Https,一般都屬于單體應(yīng)用。實際上的分布式系統(tǒng)應(yīng)該在Nginx代理上實現(xiàn)Https證書的配置。

2.1 生成證書

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

執(zhí)行上面的命令將會生成一個erver.keystore的證書文件,將此文件拷貝到資源目錄中。

2.2 修改配置

application.yml支持如下配置信息:

No.屬性名稱描述
1server.ssl.ciphers設(shè)置是否支持SSL Ciphers
2server.ssl.client-auth設(shè)置client-Authentica是Wanted還是Needed
3server.ssl.enabled設(shè)置是否開啟SSL
4server.ssl.key-alias設(shè)置keystore中key的別名
5server.ssl.key-password設(shè)置keystore中key的密碼
6server.ssl.key-store設(shè)置keyStore的路徑
7server.ssl.key-store-password設(shè)置訪問keyStore的密碼
8server.ssl.key-store-provider設(shè)置keyStore的提供者
9server.ssl.key-store-type設(shè)置keyStore類型
10server.ssl.protocol設(shè)置SSL協(xié)議類型,默認為TLS
11server.ssl.trust-store設(shè)置持有SSL Certificates的Trust Store
12server.ssl.trust-store-password設(shè)置訪問Trust Store的密碼
13server.ssl.trust-store-provider設(shè)置Trust Store的提供者
14server.ssl.trust-store-type設(shè)置Trust Store的類型

修改application.yml文件:

server:
  port: 443 # https默認訪問端口
  ssl:
    key-store: classpath:server.keystore # 證書存放的位置
    key-alias: tomcat # 證書別名
    key-store-type: JKS # P12證書格式
    key-store-password: 123456

編寫SpringBoot啟動類:

@Controller
@SpringBootApplication
public class StartSpringBoot {
    public static void main(String[] args) {
        SpringApplication.run(StartSpringBoot.class, args);
    }
    @ResponseBody
    @RequestMapping("/home")
    public String home() {
        return "<h1>hello springboot !!! </h1>";
    }
}

啟動項目,發(fā)現(xiàn)Tomcat在443端口進行了啟動:

訪問https://localhost/home :

2.3 配置轉(zhuǎn)換器

既然已經(jīng)配置了https訪問,那么原來使用http協(xié)議進行訪問的路徑也應(yīng)該重定向到https路徑下,這里僅以tomcat為例,新建配置類:

@Configuration
public class HttpConnectorConfig {
    /**
     * 獲取Http連接器
     * @return Connector
     */
    public Connector getHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http"); // 使用http協(xié)議
        connector.setSecure(false); // 非安全傳輸
        connector.setPort(80); // HTTP監(jiān)聽端口
        connector.setRedirectPort(443); // 重定向端口
        return connector;
    }
    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL"); // 設(shè)置約束
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*"); // 所有的路徑全部進行重定向處理
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(getHttpConnector()); // 添加連接器
        return tomcat;
    }
}

重新啟動項目,發(fā)現(xiàn)項目同時監(jiān)聽了80和443端口。

訪問:http://localhost/home 發(fā)現(xiàn)自動跳轉(zhuǎn)為https訪問。

到此這篇關(guān)于SpringBoot配置Https訪問的文章就介紹到這了,更多相關(guān)SpringBoot配置Https訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談javap命令拆解字節(jié)碼文件

    淺談javap命令拆解字節(jié)碼文件

    這篇文章主要介紹了拆解字節(jié)碼文件javap命令,對反編譯感興趣的同學(xué)可以參考下
    2021-04-04
  • Springboot熱部署實現(xiàn)原理及實例詳解

    Springboot熱部署實現(xiàn)原理及實例詳解

    這篇文章主要介紹了Springboot熱部署實現(xiàn)原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    這篇文章主要介紹了Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Mybatis-Plus更新時間字段不生效的解決

    Mybatis-Plus更新時間字段不生效的解決

    在使用Mybatis-Plus時,可能會遇到updateTime字段不自動更新的問題,通過分析,原因在于selectById獲取舊數(shù)據(jù)后,如果字段已有值,更新操作不會自動填充更新時間,可以通過直接在實體中設(shè)置更新時間或在更新操作時指定時間來解決此問題
    2024-09-09
  • 深入解析java中的值傳遞和引用傳遞

    深入解析java中的值傳遞和引用傳遞

    這篇文章主要介紹了深入解析java中的值傳遞和引用傳遞,值傳遞是將變量的值復(fù)制給另一個變量,兩個變量之間并沒有直接關(guān)系,引用傳遞是將變量的引用(內(nèi)存地址)傳遞給另一個變量,兩個變量之間指向同一個內(nèi)存地址,修改一個變量的值也會影響到另一個變量
    2023-07-07
  • Java Socket報錯打開文件過多的問題

    Java Socket報錯打開文件過多的問題

    這篇文章主要介紹了Java Socket報錯打開文件過多的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringCloud客戶端的負載均衡Ribbon的實現(xiàn)

    SpringCloud客戶端的負載均衡Ribbon的實現(xiàn)

    微服務(wù)架構(gòu),不可避免的存在單個微服務(wù)有多個實例,這篇文章主要介紹了SpringCloud客戶端的負載均衡Ribbon的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java?中泛型?T?和???的區(qū)別詳解

    Java?中泛型?T?和???的區(qū)別詳解

    本文主要介紹了Java?中泛型?T?和???的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java加解密技術(shù)系列之RSA詳解

    Java加解密技術(shù)系列之RSA詳解

    出于安全考慮,網(wǎng)絡(luò)的傳輸中經(jīng)常對傳輸數(shù)據(jù)做加密和編碼處理,本篇文章主要介紹Java加解密技術(shù)系列之RSA詳解,非常具有實用價值,需要的朋友可以參考下。
    2016-10-10
  • 淺談Java 將圖片打包到j(luò)ar中的路徑問題

    淺談Java 將圖片打包到j(luò)ar中的路徑問題

    下面小編就為大家分享一篇淺談Java 將圖片打包到j(luò)ar中的路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02

最新評論