国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

這篇具有很好參考價(jià)值的文章主要介紹了【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近研究給微服務(wù)項(xiàng)目配置 ssl 證書,如此才可以對(duì)接微信小程序(需要使用 https 請(qǐng)求)。傳統(tǒng)單體項(xiàng)目來(lái)說(shuō),首先往項(xiàng)目中添加證書文件,然后在配置文件中配置 ssl 證書路徑、密碼等相關(guān)信息;那么微服務(wù)這么多項(xiàng)目,總不能一個(gè)個(gè)配置 ssl 證書,最后發(fā)現(xiàn)可以直接通過(guò)網(wǎng)關(guān) Gateway 解決該問(wèn)題,完全不用對(duì)微服務(wù)下的項(xiàng)目做變動(dòng),親測(cè)有效。

目錄

1 SSL/TLS 證書

1.1 介紹

HTTPS協(xié)議

1.2?證書申請(qǐng)

1.3 證書類型及選擇

2?Gateway 網(wǎng)關(guān)配置 ssl 證書

2.1 支持 https 訪問(wèn)

① 證書移到 resources 目錄

② yml 文件中配置 ssl 證書

2.2 支持 https 和 http 訪問(wèn)

① 證書移到 resources 目錄

② yml 文件中配置 ssl 證書

③ http 端口設(shè)置:

④ HttpServer.java

2.3 支持 https 或 http 訪問(wèn)

① 證書移到 resources 目錄

② yml 文件中配置 ssl 證書

③?IsSecure 配置

2.4 服務(wù)器域名訪問(wèn)

① https+域名+端口訪問(wèn)

②?http+域名+端口訪問(wèn)


1 SSL/TLS 證書

1.1 介紹

SSL/TLS證書是一種數(shù)字證書,用于通過(guò)SSL/TLS協(xié)議對(duì)網(wǎng)站進(jìn)行加密和認(rèn)證。它是在客戶端和服務(wù)器之間建立安全連接的一種方式,以確保數(shù)據(jù)在傳輸過(guò)程中被加密和保護(hù)。SSL/TLS證書包含了一些信息,如證書持有人的名稱、證書頒發(fā)機(jī)構(gòu)的名稱、證書有效期、公鑰等等。

其中,公鑰是證書中最重要的信息之一。它用于加密數(shù)據(jù)并將其發(fā)送到服務(wù)器,而只有服務(wù)器上的私鑰才能解密這些數(shù)據(jù)。證書的頒發(fā)機(jī)構(gòu)會(huì)對(duì)證書持有人進(jìn)行身份驗(yàn)證,并在驗(yàn)證成功后簽發(fā)證書,以確保證書的可靠性和安全性。

SSL/TLS證書可以分為三種類型:DV(域名驗(yàn)證)證書、OV(組織驗(yàn)證)證書和EV(增強(qiáng)驗(yàn)證)證書。DV證書只驗(yàn)證域名所有權(quán),OV證書進(jìn)行了更嚴(yán)格的身份驗(yàn)證,而EV證書則需要進(jìn)行更加深入的身份驗(yàn)證,以確保證書持有人的身份和組織的真實(shí)性。

HTTPS協(xié)議

簡(jiǎn)單來(lái)說(shuō),HTTPS協(xié)議?= HTTP協(xié)議 + SSL/TLS協(xié)議,在進(jìn)行HTTPS數(shù)據(jù)傳輸時(shí),需要使用SSL/TLS對(duì)數(shù)據(jù)進(jìn)行加密和解密,同時(shí)使用HTTP協(xié)議對(duì)加密后的數(shù)據(jù)進(jìn)行傳輸。

HTTPS協(xié)議的目的就是提高傳輸安全等級(jí),如保護(hù)賬號(hào)、密碼、在線交易記錄等敏感信息

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

???通信過(guò)程

  1. 客戶端向服務(wù)器發(fā)起 HTTPS 請(qǐng)求,連接到服務(wù)器的指定端口(一般是443);
  2. 服務(wù)器端存在公鑰服務(wù)器端私鑰,用于非對(duì)稱加密,服務(wù)器將公鑰發(fā)送給客戶端;
  3. 客戶端收到服務(wù)器端發(fā)送的證書后,驗(yàn)證其合法性,若公鑰合格,那么客戶端會(huì)生成客戶端密鑰(client key、隨機(jī)值),然后將公鑰客戶端密鑰非對(duì)稱加密成密文(包含請(qǐng)求信息),HTTPS 中的第一次 HTTP 請(qǐng)求結(jié)束。
  4. 客戶端發(fā)起 HTTPS 中的第二個(gè) HTTP 請(qǐng)求,將加密后的密文發(fā)送給服務(wù)器。
  5. 服務(wù)器端收到密文后,使用私鑰對(duì)其進(jìn)行非對(duì)稱解密,解密后獲取客戶端密鑰,此時(shí)服務(wù)器端判定 https 訪問(wèn)正確,使用公鑰客戶端密鑰繼續(xù)非對(duì)稱加密成密文(包含返回信息),然后將該密文發(fā)送給客戶端。
  6. 客戶端收到密文后,使用客戶端密鑰對(duì)其進(jìn)行解密,獲得服務(wù)器端發(fā)送的真實(shí)數(shù)據(jù)。如此,HTTPS中的第二個(gè)HTTP請(qǐng)求結(jié)束,整個(gè)HTTPS傳輸完成。

總之 SSL/TLS 證書是為 https 請(qǐng)求服務(wù)的,可以簡(jiǎn)單將其理解為 https 請(qǐng)求的重要媒介,以此來(lái)保證請(qǐng)求的安全性和準(zhǔn)確性。

1.2?證書申請(qǐng)

SSL/TLS 證書由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)CA,在驗(yàn)證服務(wù)器身份后頒發(fā),具有服務(wù)器身份驗(yàn)證和數(shù)據(jù)傳輸加密功能。

???申請(qǐng)步驟

  1. 選擇SSL證書類型:根據(jù)您的網(wǎng)站和業(yè)務(wù)需求,選擇適合的SSL證書類型,如DV SSL、OV SSL、EV SSL等。
  2. 驗(yàn)證域名所有權(quán):您需要驗(yàn)證您擁有該域名的所有權(quán),一般有兩種方式:DNS驗(yàn)證和文件驗(yàn)證。DNS驗(yàn)證需要在域名的DNS記錄中添加一條特定的TXT記錄,文件驗(yàn)證需要在您的網(wǎng)站根目錄中放置一個(gè)特定的文件。
  3. 提交SSL證書申請(qǐng):選擇SSL證書品牌和證書期限,填寫相關(guān)信息并提交SSL證書申請(qǐng)。
  4. 審核和頒發(fā)SSL證書:SSL證書申請(qǐng)?zhí)峤缓?,證書頒發(fā)機(jī)構(gòu)會(huì)對(duì)您的申請(qǐng)進(jìn)行審核,審核通過(guò)后會(huì)頒發(fā)SSL證書,并將證書文件發(fā)送給您。
  5. 安裝SSL證書:根據(jù)您的服務(wù)器類型和操作系統(tǒng),按照證書頒發(fā)機(jī)構(gòu)提供的安裝指南安裝SSL證書。

阿里云、騰訊云、華為云等平臺(tái)都可以申請(qǐng),不過(guò)無(wú)論使用哪種方式,申請(qǐng)SSL證書前,您需要先進(jìn)行域名驗(yàn)證,確保您擁有該域名的所有權(quán)或管理權(quán)。驗(yàn)證方式有多種,包括DNS驗(yàn)證、文件驗(yàn)證、郵箱驗(yàn)證等。

以下是申請(qǐng)成功的阿里云免費(fèi)ssl證書:

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

1.3 證書類型及選擇

點(diǎn)擊上圖中的下載按鈕,有諸多類型的證書供選擇??

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

乍一看會(huì)有點(diǎn)懵,到底自己的項(xiàng)目該如何選擇呢?

如果是 Spring Boot 項(xiàng)目的話,可選擇紅框內(nèi)的這兩項(xiàng),首先因?yàn)?Spring Boot 默認(rèn)的?web 服務(wù)容器是 Tomcat;然后 JKS 由 JDK 支持,而 Spring Boot 又是以 JDK(Java Development Kit)為基礎(chǔ)。其余證書就看服務(wù)器類型了~

我選擇了JKS,下載解壓后有兩個(gè)文件,分別是 .jks 后綴和 .txt 后綴的 ??

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

2?Gateway 網(wǎng)關(guān)配置 ssl 證書

前言講了 spring boot 單體項(xiàng)目配置 ssl 證書的流程,其實(shí) Gateway 配置方式類似,雖然 Gateway 本身不是 spring boot 框架(spring-cloud-starter-gateway 與 spring boot 沖突),但是 Gateway 也是屬于 spring 框架的,而 spring 框架支持配置 ssl 證書,因此可完成該配置。

背景:SpringBoot版本:2.4.2,SpringCloud版本:2020.0.1

2.1 支持 https 訪問(wèn)

第一種情況,微服務(wù)項(xiàng)目只支持 https 訪問(wèn),也就是該微服務(wù)只支持客戶端進(jìn)行 https 報(bào)錯(cuò),若進(jìn)行 http 訪問(wèn)則會(huì)報(bào)錯(cuò)。若項(xiàng)目適用較為簡(jiǎn)單,可使用該方式。

① 證書移到 resources 目錄

首先將證書移到 Gateway 項(xiàng)目的 resources 目錄下,供項(xiàng)目讀取 ??

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

② yml 文件中配置 ssl 證書

下邊的 443 并不是說(shuō)固定的,可進(jìn)行指定,這也是 gateway 網(wǎng)關(guān)的訪問(wèn)端口。如果該項(xiàng)目需要部署到服務(wù)器上,那你需要開放該指定端口,那么客戶端才能進(jìn)行訪問(wèn)。

server:
  port: 443 #https端口,可指定
  # 配置SSL 證書
  ssl:
    key-store : classpath:xxxx.com.jks #ssl文件名稱
    key-store-password : xxxx #ssl文件密碼
    key-store-type: JKS
    enabled: true

至此配置完成,可以說(shuō)和單體項(xiàng)目的配置別無(wú)二致。

注意:此時(shí)其他微服務(wù)項(xiàng)目是沒(méi)有配置 ssl 證書的,你的 https 訪問(wèn)流程(請(qǐng)求時(shí)將 http 改為 https 即可)如下:https訪問(wèn) -> 網(wǎng)關(guān) -> 代理到 http 后端。

2.2 支持 https 和 http 訪問(wèn)

有時(shí)現(xiàn)實(shí)情況又是靈活的,需要項(xiàng)目同時(shí)適配 http 訪問(wèn)和 https 訪問(wèn),那么就需要再多兩步操作,類似于重定向。

① 證書移到 resources 目錄

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

② yml 文件中配置 ssl 證書

server:
  port: 443 #https端口,可指定
  # 配置SSL 證書
  ssl:
    key-store : classpath:xxxx.com.jks #ssl文件名稱
    key-store-password : xxxx #ssl文件密碼
    key-store-type: JKS
    enabled: true

③ http 端口設(shè)置:

也是在 yml 文件中配置

http:
  port: 8080 #可指定

④ HttpServer.java

編寫該文件以實(shí)現(xiàn)用過(guò)通過(guò) 8080 端口訪問(wèn)即可繞過(guò) https 驗(yàn)證,從而模擬?http 訪問(wèn)。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.reactive.HttpHandler;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Configuration
public class HttpServer {

    @Autowired
    private HttpHandler httpHandler;

    private WebServer webServer;

    @Value("${http.port}")
    private Integer httpPort;

    @PostConstruct
    public void start() {
        NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(httpPort);
        WebServer webServer = factory.getWebServer(httpHandler);
        webServer.start();
    }

    @PreDestroy
    public void stop() {
        webServer.stop();
    }

}

至此配置完成。

2.3 支持 https 或 http 訪問(wèn)

有時(shí)微服務(wù)中的某個(gè)項(xiàng)目可能只需要實(shí)行 http 訪問(wèn),而不需要進(jìn)行 https 訪問(wèn),可進(jìn)行如下配置:

① 證書移到 resources 目錄

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

② yml 文件中配置 ssl 證書

server:
  port: 443 #https端口,可指定
  # 配置SSL 證書
  ssl:
    key-store : classpath:xxxx.com.jks #ssl文件名稱
    key-store-password : xxxx #ssl文件密碼
    key-store-type: JKS
    enabled: true

③?IsSecure 配置

配置中的 service-demo 為服務(wù)名稱,只需要配置不同服務(wù)對(duì)應(yīng)的 IsSecure 值即可支持對(duì)應(yīng)服務(wù)的訪問(wèn)方式。

#網(wǎng)關(guān)路由配置
spring:
  cloud:
    gateway:
      filter:
      routes:
        - id: service-demo
          uri: lb://service-demo
          predicates:
            - Path=/service-demo/**
          filters:
            - StripPrefix=1

#設(shè)置路由轉(zhuǎn)發(fā)以https方式轉(zhuǎn)發(fā),true則以https方式轉(zhuǎn)發(fā)false以http方式轉(zhuǎn)發(fā)
service-demo:
  ribbon:
    IsSecure: true

2.4 服務(wù)器域名訪問(wèn)

前提是該服務(wù)器與域名已經(jīng)綁定,同時(shí)服務(wù)器已開放這兩個(gè)端口(如果使用 docker ,注意啟動(dòng)項(xiàng)目容器時(shí)開放兩個(gè)端口),那么給 gateway 配置的 ssl 證書就會(huì)配合域名生效。就算服務(wù)器與域名綁定了,但是項(xiàng)目沒(méi)有配置 ssl 證書,那么進(jìn)行域名訪問(wèn)也是不成功的。當(dāng)然,將域名換成ip地址也是完全可以進(jìn)行訪問(wèn)的。

① https+域名+端口訪問(wèn)

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

②?http+域名+端口訪問(wèn)

【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))

參考文章:

SpringCloud Gateway網(wǎng)關(guān)配置 后端微服務(wù)支持http和https調(diào)用

springboot安裝ssl證書文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478348.html

到了這里,關(guān)于【Java開發(fā)】Spring Cloud 11:Gateway 配置 ssl 證書(https、http、域名訪問(wèn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包