自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何輕松地設(shè)置雙向TLS保護(hù)應(yīng)用程序安全

譯文
安全
本文以示例的形式,并配合自動(dòng)化的腳本,向您展示如何輕松地設(shè)置雙向TLS,以實(shí)現(xiàn)對(duì)于應(yīng)用程序的安全保護(hù)。

[[404242]]

【51CTO.com快譯】在安全實(shí)踐領(lǐng)域,TLS身份驗(yàn)證作為一種技術(shù)手段,通常能夠保證任何用戶通過證書,瀏覽到真實(shí)、安全的Web應(yīng)用。而在此基礎(chǔ)上發(fā)展而來的雙向TLS(Two-Way TLS),則可以僅允許部分用戶訪問或調(diào)用目標(biāo)應(yīng)用。

下面,我將以示例的形式,并配合自動(dòng)化腳本,依次向您展示:搭建服務(wù)器,向服務(wù)器發(fā)送未加密的hello消息,以HTTPS的方式在服務(wù)器上啟用單向TLS,要求客戶端通過雙向TLS來標(biāo)識(shí)自己,基于可信的CA(證書頒發(fā)機(jī)構(gòu))實(shí)現(xiàn)雙向TLS,以及對(duì)HTTP客戶端進(jìn)行相關(guān)測(cè)試。

基本定義

  • 身份標(biāo)識(shí)(Identity):一對(duì)私鑰與公鑰,通常被存放在信任存儲(chǔ)庫(kù)中。
  • 信任存儲(chǔ)庫(kù)(TrustStore):庫(kù)中包含了一個(gè)或多個(gè)可信證書(也稱為公鑰)的列表。
  • 單向認(rèn)證(也稱為單向tls、單向ssl):客戶端在驗(yàn)證對(duì)方證書時(shí)用到的https連接。
  • 雙向認(rèn)證(也稱為雙向tls、雙向 ssl、雙向認(rèn)證):客戶端與對(duì)方相互驗(yàn)證證書時(shí)的https 連接。

實(shí)用鏈接

通過如下的統(tǒng)一參考頁,我向社區(qū)里正在使用Apache http、Java、Kotlin、以及Scala等開發(fā)人員,提供了包含40多個(gè)http客戶端的配置示例。

在處理http請(qǐng)求的過程中,它們可能會(huì)導(dǎo)致應(yīng)用在初始構(gòu)建時(shí),需要花費(fèi)一定的時(shí)間來下載大量依賴項(xiàng)。因此,我也通過GitHub - SSLContext Kickstart(https://github.com/Hakky54/sslcontext-kickstart)來簡(jiǎn)化客戶端的配置。由于每一個(gè)http客戶端都可能需要不同的ssl對(duì)象來啟用ssl,因此代碼庫(kù)需要提供基本的ssl配置。

啟動(dòng)服務(wù)器

首先,我們需要做好如下準(zhǔn)備:

  • Java 11
  • Maven 3.5.0
  • Eclipse、Intellij IDEA(或任何其他文本編輯器,如 VIM)
  • 一個(gè)終端
  • 從https://github.com/Hakky54/mutual-tls處克隆項(xiàng)目

如果您想在不安裝任何軟件的情況下,立即開始體驗(yàn)該項(xiàng)目,請(qǐng)點(diǎn)擊鏈接,并通過在線開發(fā)環(huán)境的方式打開此項(xiàng)目。

由于該項(xiàng)目已經(jīng)包含了一個(gè)maven包裝器(wrapper),因此您可以在無需額外安裝的情況下,運(yùn)行該項(xiàng)目。同時(shí),下面將涉及到的各種包含了maven包裝器的命令,都已被默認(rèn)包含在mvn命令中。

如果您想使用Java 8來運(yùn)行該項(xiàng)目,則可以使用git命令:git checkout tags/java-8-compatible,來運(yùn)行一個(gè)兼容的版本。有關(guān)參數(shù)的具體設(shè)置細(xì)節(jié),請(qǐng)參見鏈接--https://github.com/Hakky54/mutual-tls-ssl/tree/java-8-compatible。

為了啟動(dòng)服務(wù)端,您可以在服務(wù)端的項(xiàng)目中運(yùn)行App類的main方法,或者在終端的根目錄下運(yùn)行命令:cd server/ && mvn spring-boot:run,以及使用maven包裝器:cd server-with-spring-boot/ && ./../mvnw spring-boot:run。

向服務(wù)器發(fā)送未加密的hello

由于當(dāng)前運(yùn)行在默認(rèn)端口8080上的服務(wù)器端是未經(jīng)加密的,因此您可以在終端中使用以下curl命令:curl -i -XGET http://localhost:8080/api/hello,來調(diào)用hello:

其響應(yīng)內(nèi)容如下(純文本):

  1. HTTP/1.1 200 
  2. Content-Type: text/plain;charset=UTF-8 
  3. Content-Length: 5 
  4. Date: Sun, 11 Nov 2018 14:21:50 GMT 
  5.  
  6. Hello 

您還可以使用客戶端目錄中所提供的客戶端應(yīng)用,去調(diào)用服務(wù)器。由于客戶端依賴于本項(xiàng)目的其他組件,所以您需要先在根目錄下運(yùn)行mvn install或./mvnw install。

此處的客戶端是基于Cucumber的集成測(cè)試。您可以通過從IDE處運(yùn)行ClientRunnerIT類、或從根目錄中的終端運(yùn)行:cd client/ && mvn exec:java、亦或使用maven的包裝器命令:cd client/ && ./../mvnw exec:java,來啟動(dòng)之。您可以在客戶端項(xiàng)目的測(cè)試資源中,通過Hello.feature文件,來獲悉集成測(cè)試的具體步驟。

為了同時(shí)運(yùn)行服務(wù)器和客戶端中的方法,您可以在根目錄中使用命令:mvn clean verify,或使用maven的包裝器:./mvnw clean verify。如果服務(wù)端與客戶端同處一臺(tái)服務(wù)器,那么客戶端會(huì)默認(rèn)向localhost發(fā)送請(qǐng)求;如果它們?cè)诓煌闹鳈C(jī)上運(yùn)行,您需要為客戶端提供帶有VM參數(shù):-Durl=http://[HOST]:[PORT]的定制化的url。

在服務(wù)器上啟用 HTTPS(即單向的TLS)

下面,我們來討論如何通過啟用TLS,來保護(hù)服務(wù)器端。您可以通過將如下所需的屬性(YAML),添加到名為application.yml的應(yīng)用屬性文件中來實(shí)現(xiàn):

  1. server: 
  2. port: 8443 
  3. ssl: 
  4.     enabled: true 

在此,您可能會(huì)對(duì)為何將端口設(shè)置為 8443表示疑惑。其原因在于:帶有https的tomcat服務(wù)的約定端口為8443,而對(duì)于http則是8080。雖然我們可以使用端口8080進(jìn)行https連接,但這并不是一種推薦的做法。具體有關(guān)端口約定的詳細(xì)信息,請(qǐng)參閱維基百科的鏈接

您可以通過重啟服務(wù)器,來生效那些對(duì)于應(yīng)用的更改。當(dāng)然,您也可能會(huì)收到異常信息:IllegalArgumentException: Resource location must not be null。該消息的產(chǎn)生,是因?yàn)榉?wù)器需要帶有服務(wù)器證書的密鑰庫(kù),以確保與外界的安全連接。如果您提供的VM參數(shù)為:Djavax.net.debug=SSL,keymanager,trustmanager,ssl:handshake,那么服務(wù)器可以為您提供更多的信息。

顯然,為了解決此問題,您需要?jiǎng)?chuàng)建一個(gè)帶有服務(wù)器公鑰和私鑰的密鑰庫(kù)。其中的公鑰可與用戶共享,以便加密彼此之間的通信;而服務(wù)器的私鑰則可用來解密。值得注意的是,我們絕對(duì)不可以共享服務(wù)器的私鑰,以避免被其他人用來破解截獲到的通信,進(jìn)而獲悉被加密的通信內(nèi)容。

因此,若要?jiǎng)?chuàng)建帶有公鑰和私鑰的密鑰庫(kù),請(qǐng)?jiān)诮K端中執(zhí)行以下命令(純文本):

  1. keytool -v -genkeypair -dname "CN=Hakan,OU=Amsterdam,O=Thunderberry,C=NL" -keystore shared-server-resources/src/main/resources/identity.jks -storepass secret -keypass secret -keyalg RSA -keysize 2048 -alias server -validity 3650 -deststoretype pkcs12 -ext KeyUsage=digitalSignature,dataEncipherment,keyEncipherment,keyAgreement -ext ExtendedKeyUsage=serverAuth,clientAuth -ext SubjectAlternativeName:c=DNS:localhost,DNS:raspberrypi.local,IP:12 0.1 

為了告知服務(wù)器密鑰庫(kù)的位置,以及具體的密碼,請(qǐng)將如下YAML內(nèi)容粘貼到您的application.yml文件中:

  1. server: 
  2.   port: 8443 
  3.   ssl: 
  4.     enabled: true 
  5.     key-store: classpath:identity.jks 
  6.     key-password: secret 
  7.     key-store-password: secret 

至此,您已成功啟用了服務(wù)器和客戶端之間的TLS加密連接。您可以嘗試著使用curl命令:curl -i --insecure -v -XGET https://localhost:8443/api/hello,去調(diào)用服務(wù)器。

當(dāng)您在ClientRunnerIT類中運(yùn)行客戶端時(shí),您可能會(huì)看到一條錯(cuò)誤消息:java.net.ConnectException: Connection refused (Connection refused)。從字面上看,它是指客戶端試圖向服務(wù)器建立連接,可以被拒絕了。其深層原因是:客戶端試圖使用的是端口8080,而服務(wù)器只在端口8443上處于活躍狀態(tài)。因此,您需要進(jìn)行如下修改,并將其應(yīng)用到Constants類中,即從:

  1. private static final String DEFAULT_SERVER_URL = "http://localhost:8080"

改為:

  1. private static final String DEFAULT_SERVER_URL = "https://localhost:8443"

在完成修改之后,讓我們?cè)俅芜\(yùn)行客戶端。您會(huì)看到另一條消息:“javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。這意味著客戶端希望通過HTTPS進(jìn)行通信,但是在它握手的過程中,收到了無法識(shí)別的服務(wù)器證書??梢姡€需要?jiǎng)?chuàng)建一個(gè)包含了各種受信任證書的信任庫(kù),以方便客戶端在SSL握手過程中,將收到的證書與其信任庫(kù)里的證書內(nèi)容進(jìn)行比較。如果相匹配的話,則可以繼續(xù)SSL的握手過程。當(dāng)然,在創(chuàng)建信任庫(kù)之前,您需要事先獲得服務(wù)器的證書。

導(dǎo)出服務(wù)器的證書

您可以使用如下命令,導(dǎo)出服務(wù)器的證書:

  1. keytool -v -exportcert -file shared-server-resources/src/main/resources/server.cer -alias server -keystore shared-server-resources/src/main/resources/identity.jks -storepass secret -rfc 

接著,您可以為客戶端創(chuàng)建一個(gè)信任庫(kù),并使用如下命令導(dǎo)入服務(wù)器的證書:

  1. keytool -v -importcert -file shared-server-resources/src/main/resources/server.cer -alias server -keystore client/src/test/resources/truststore.jks -storepass secret -noprompt 

為了讓客戶端知曉信任庫(kù)的存在,您還需要告知其信任庫(kù)的正確位置、密碼、以及身份驗(yàn)證已啟用。您可以在客戶端的application.yml文件中,提供如下屬性:

  1. client: 
  2.   ssl: 
  3.     one-way-authentication-enabled: true 
  4.     two-way-authentication-enabled: false 
  5.     trust-store: truststore.jks 
  6.     trust-store-password: secret 

對(duì)客戶端進(jìn)行身份驗(yàn)證(雙向TLS)

接下來,服務(wù)器端需要驗(yàn)證客戶端的身份,以判斷其是否可信。其實(shí)現(xiàn)方式為:通過client-auth屬性放入服務(wù)器的application.yml中,以告知服務(wù)器去驗(yàn)證客戶端。

  1. server: 
  2.   port: 8443 
  3.   ssl: 
  4.     enabled: true 
  5.     key-store: classpath:identity.jks 
  6.     key-password: secret 
  7.     key-store-password: secret 
  8.     client-auth: need 

當(dāng)然,如果您直接運(yùn)行它,則會(huì)因?yàn)榭蛻舳烁緵]有證書,而產(chǎn)生錯(cuò)誤消息:javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate(無效的證書信息)。因此,我們需要通過如下命令,來創(chuàng)建證書:

  1. keytool -v -genkeypair -dname "CN=Suleyman,OU=Altindag,O=Altindag,C=NL" -keystore client/src/test/resources/identity.jks -storepass secret -keypass secret -keyalg RSA -keysize 2048 -別名客戶端 -validity 3650 -deststoretype pkcs12 -ext KeyUsage=digitalSignature,dataEncipherment,keyEncipherment,keyAgreement -ext ExtendedKeyUsage=serverAuth,clientAuth 

同時(shí),您還需要為服務(wù)器創(chuàng)建一個(gè)信任庫(kù)。不過,在創(chuàng)建信任庫(kù)之前,您需要通過如下命令獲取客戶端的證書:

  1. keytool -v -exportcert -file client/src/test/resources/client.cer -alias client -keystore client/src/test/resources/identity.jks -storepass secret -rfc 

下一步便是使用客戶端的證書,來創(chuàng)建服務(wù)器的信任庫(kù):

  1. keytool -v -importcert -file client/src/test/resources/client.cer -alias client -keystore shared-server-resources/src/main/resources/truststore.jks -storepass secret -noprompt 

同樣,為了讓客戶端獲悉該密鑰庫(kù)的存在,您還需要告知其信任庫(kù)的正確位置、密碼、以及身份驗(yàn)證已啟用。您可以在客戶端的application.yml文件中,提供如下屬性:

  1. client: 
  2.   ssl: 
  3.     one-way-authentication-enabled: false 
  4.     two-way-authentication-enabled: true 
  5.     key-store: identity.jks 
  6.     key-password: secret 
  7.     key-store-password: secret 
  8.     trust-store: truststore.jks 
  9.    trust-store-password: secret 

對(duì)應(yīng)地,為了讓服務(wù)器知曉新創(chuàng)建的信任庫(kù),我們需要將當(dāng)前屬性替換為以下屬性:

  1. server: 
  2.   port: 8443 
  3.   ssl: 
  4.     enabled: true 
  5.     key-store: classpath:identity.jks 
  6.     key-password: secret 
  7.     key-store-password: secret 
  8.     trust-store: classpath:truststore.jks 
  9.     trust-store-password: secret 
  10.    client-auth: need 

至此,您已完成了雙向TLS的安裝。如果再次運(yùn)行客戶端,您將會(huì)發(fā)現(xiàn)客戶端能夠以安全的方式,從服務(wù)器端接收到hello消息了。

基于可信CA的雙向TLS

有了前面的基礎(chǔ),我們便可以采用基于可信CA的雙向(mutual)認(rèn)證了。我們首先來看看它的優(yōu)缺點(diǎn):

優(yōu)點(diǎn)

  • 客戶端不需要自行添加服務(wù)器的證書。
  • 服務(wù)器不需要添加客戶端的所有證書。
  • 由于是由CA管控著證書的有效期,因此本地運(yùn)維工作會(huì)大幅減少。

缺點(diǎn)

  • 您無法細(xì)粒度地控制哪些客戶端可以調(diào)用自己的應(yīng)用,哪些不可以。任何客戶端,只要持有CA頒發(fā)的證書,即可訪問您的應(yīng)用程序。

其具體實(shí)現(xiàn)步驟如下:

1. 創(chuàng)建CA

通常,您需要向某個(gè)已有的證書頒發(fā)機(jī)構(gòu),提供自己的證書以獲取其簽名。下面,我們將創(chuàng)建一個(gè)自己的CA,并用它去簽發(fā)客戶端和服務(wù)器的證書。

  1. keytool -v -genkeypair -dname "CN=Root-CA,OU=Certificate Authority,O=Thunderberry,C=NL" -keystore root-ca/identity.jks -storepass secret -keypass secret -keyalg RSA -keysize 2048 -alias root-ca -validity 3650 -deststoretype pkcs12 -ext KeyUsage=digitalSignature,keyCertSign -ext BasicConstraints=ca:true,PathLen:3 

當(dāng)然,您也可以使用存儲(chǔ)庫(kù)默認(rèn)提供的那個(gè),具體請(qǐng)參閱identity.jks。

2. 創(chuàng)建證書簽名請(qǐng)求

為了簽發(fā)證書,您需要通過如下命令,提供一個(gè)證書簽名請(qǐng)求 (.csr) 文件。其中,服務(wù)器的證書簽名請(qǐng)求為:

  1. keytool -v -genkeypair -dname "CN=Root-CA,OU=Certificate Authority,O=Thunderberry,C=NL" -keystore root-ca/identity.jks -storepass secret -keypass secret -keyalg RSA -keysize 2048 -alias root-ca -validity 3650 -deststoretype pkcs12 -ext KeyUsage=digitalSignature,keyCertSign -ext BasicConstraints=ca:true,PathLen:3 

而客戶端的證書簽名請(qǐng)求為:

  1. keytool -v -certreq -file client/src/test/resources/client.csr -keystore client/src/test/resources/identity.jks -alias client -keypass secret -storepass secret -keyalg rsa 

3. 使用證書簽名請(qǐng)求簽發(fā)證書

簽發(fā)客戶證書:

  1. keytool -v -gencert -infile client/src/test/resources/client.csr -outfile client/src/test/resources/client-signed.cer -keystore root-ca/identity.jks -storepass secret -alias root-ca -validity 3650 -ext KeyUsage=digitalSignature,dataEncipherment,keyEncipherment,keyAgreement -ext ExtendedKeyUsage=serverAuth,clientAuth -rfc 

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

  1. keytool -v -gencert -infile shared-server-resources/src/main/resources/server.csr -outfile shared-server-resources/src/main/resources/server-signed.cer -keystore root-ca/identity.jks -storepass secret -alias root-ca -validity 3650 -ext KeyUsage=digitalSignature,dataEncipherment,keyEncipherment,keyAgreement -ext ExtendedKeyUsage=serverAuth,clientAuth -ext SubjectAlternativeName:c=DNS:localhost,DNS:raspberrypi.local,IP:127.0.0.1 -rfc 

4. 用已簽名的證書替換未簽名的證書

由于我們無法直接用密鑰工具(keytool)去導(dǎo)入已簽名的證書,因此我們需要將由CA簽發(fā)的證書存儲(chǔ)到identity.jks中。先導(dǎo)出CA證書:

  1. keytool -v -exportcert-文件root-ca / root-ca.pem -alias root-ca -keystore root-ca / identity.jks -storepass secret -rfc 

然后是客戶端:

  1. keytool -v -importcert -file root-ca/root-ca.pem -alias root-ca -keystore client/src/test/resources/identity.jks -storepass secret -noprompt 
  2. keytool -v -importcert -file client/src/test/resources/client-signed.cer -alias client -keystore client/src/test/resources/identity.jks -storepass secret 
  3. keytool -v -delete -alias root-ca -keystore client/src/test/resources/identity.jks -storepass secret 

最后是服務(wù)器端:

  1. keytool -v -importcert -file root-ca/root-ca.pem -alias root-ca -keystore shared-server-resources/src/main/resources/identity.jks -storepass secret -noprompt 
  2. keytool -v -importcert -file shared-server-resources/src/main/resources/server-signed.cer -alias server -keystore shared-server-resources/src/main/resources/identity.jks -storepass secret 
  3. keytool -v -delete -alias root-ca -keystore shared-server-resources/src/main/resources/identity.jks -storepass secret 

5. 設(shè)置僅信任CA

為了將客戶端和服務(wù)器配置為僅信任某個(gè)CA,我們需要通過將CA證書導(dǎo)入客戶端和服務(wù)器的信任庫(kù)來實(shí)現(xiàn)。其中在客戶端,我們可以使用如下操作命令:

  1. keytool -v -importcert -file root-ca/root-ca.pem -alias root-ca -keystore client/src/test/resources/truststore.jks -storepass secret -noprompt 

在服務(wù)器端則為:

  1. keytool -v -importcert -file root-ca/root-ca.pem -alias root-ca -keystore shared-server-resources/src/main/resources/truststore.jks -storepass secret -noprompt 

同時(shí),由于信任庫(kù)仍包含客戶端和服務(wù)器的原有特定證書,因此我們需要將其刪除。其中在客戶端,我們可以使用如下操作命令:

  1. keytool -v -delete -alias server -keystore client/src/test/resources/truststore.jks -storepass secret 

在服務(wù)器端則為:

  1. keytool -v -delete -alias client -keystore shared-server-resources/src/main/resources/truststore.jks -storepass secret 

至此,如果您再次運(yùn)行客戶端,將能夠順利通過測(cè)試。客戶端將會(huì)接收到來自服務(wù)器的hello消息,而且其中的證書是由該CA所頒發(fā)的。

帶有TLS身份驗(yàn)證的自動(dòng)化腳本

其實(shí),您還可以使用該項(xiàng)目的腳本目錄里的各種腳本,來自動(dòng)化執(zhí)行上述步驟。例如,對(duì)于單向認(rèn)證而言,可以輸入:./configure-one-way-authentication;而對(duì)于雙向認(rèn)證而言,則可以輸入:./configure-two-way-authentication-by-trusting-each-other my-company-name;對(duì)于通過可信CA進(jìn)行的雙向身份驗(yàn)證,可以輸入:./configure-two-way-authentication-by-trusting-root-ca my-company-name。

已測(cè)試的客戶端

下面是已經(jīng)通過測(cè)試的客戶端列表。您可以在ClientConfig類中找到基于純Java的http客戶端配置。該服務(wù)目錄包含了單個(gè)的http客戶端請(qǐng)求示例。其中,基于Kotlin和Scala的http客戶端配置是作為嵌套類被包含在內(nèi)的。而且,所有客戶端示例都使用的是在SSLConfig類中創(chuàng)建的相同的ssl基本配置。

Java

  • Apache HttpClient -> Client configuration | Example request
  • Apache HttpAsyncClient -> Client configuration | Example request
  • Apache 5 HttpClient -> Client configuration | Example request
  • Apache 5 HttpAsyncClient -> Client configuration | Example request
  • JDK HttpClient -> Client Configuration | Example request
  • Old JDK HttpClient -> Client Configuration & Example request
  • Netty Reactor -> Client Configuration | Example request
  • Jetty Reactive HttpClient -> Client Configuration | Example request
  • Spring RestTemplate -> Client Configuration | Example request
  • Spring WebFlux WebClient Netty -> Client Configuration | Example request
  • Spring WebFlux WebClient Jetty -> Client Configuration | Example request
  • OkHttp -> Client Configuration | Example request
  • Jersey Client -> Client Configuration | Example request
  • Old Jersey Client -> Client Configuration | Example request
  • Google HttpClient -> Client Configuration | Example request
  • Unirest -> Client Configuration | Example request
  • Retrofit -> Client Configuration | Example request
  • Async Http Client -> Client Configuration | Example request
  • Feign -> Client Configuration | Example request
  • Methanol -> Client Configuration | Example request
  • Vertx Webclient -> Client Configuration & Example request
  • RPC -> Client/Server Configuration & Example request
  • ElasticSearch -> RestHighLevelClient Configuration & example request

Kotlin

  • Fuel -> Client Configuration & Example request
  • Http4k with Apache 4 -> Client Configuration | Example request
  • Http4k with Async Apache 4 -> Client Configuration | Example request
  • Http4k with Apache 5 -> Client Configuration | Example request
  • Http4k with Async Apache 5 -> Client Configuration | Example request
  • Http4k with Java Net -> Client Configuration | Example request
  • Http4k with Jetty -> Client Configuration | Example request
  • Http4k with OkHttp -> Client Configuration | Example request
  • Kohttp -> Client Configuration & Example request
  • Ktor with Android engine -> Client Configuration | Example request
  • Ktor with Apache engine -> Client Configuration | Example request
  • Ktor with CIO (Coroutine-based I/O) engine -> Client Configuration | Example request
  • Ktor with Okhttp engine -> Client Configuration | Example request

Scala

  • Twitter Finagle -> Client Configuration | Example request
  • Twitter Finagle Featherbed -> Client Configuration & Example request
  • Akka Http Client -> Client Configuration | Example request
  • Dispatch Reboot -> Client Configuration & Example request
  • ScalaJ / Simplified Http Client -> Client Configuration & Example request
  • Sttp -> Client Configuration & Example request
  • Requests-Scala -> Client Configuration & Example request
  • Http4s Blaze Client -> Client Configuration | Example request
  • Http4s Java Net Client -> Client Configuration | Example request

原文標(biāo)題:How to Easily Set Up Mutual TLS,作者:Hakan Altındağ

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-10-11 09:00:00

云原生Kubernetes安全

2020-08-25 14:03:20

應(yīng)用程序屏蔽應(yīng)用程序內(nèi)保護(hù)網(wǎng)絡(luò)攻擊

2015-02-26 09:19:00

2013-11-19 15:35:01

2011-03-30 13:28:26

2009-06-29 14:19:50

2025-02-28 17:03:43

2021-07-20 09:44:34

云原生應(yīng)用程序安全云安全

2009-07-03 06:57:32

2021-11-24 16:51:03

gRPCGoPython

2009-12-15 10:19:05

Linux應(yīng)用程序

2012-05-29 10:04:08

2011-02-13 14:36:35

2013-02-18 16:12:55

2014-02-19 15:38:42

2022-06-22 09:00:00

安全編程語言工具

2022-09-20 23:52:50

表情符號(hào)開發(fā)面部識(shí)別

2013-10-31 10:44:54

IDE工具

2011-11-03 09:41:35

Android簽名安全性

2022-03-04 10:44:01

堆噴射惡意代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)