go語言實現TLS雙向認證的客戶端 程式碼例子
go語言實現TLS雙向認證的客戶端 程式碼例子
client.go
package main
import (
"crypto/tls"
"crypto/x509"
"io/ioutil"
"fmt"
"log"
"strings"
"net/http"
)
func doGet(client * http.Client) (resp *http.Response, err error) {
return client.Get("https://localhost:8080/service/hello")
}
func doPost(client * http.Client) (resp *http.Response, err error) {
requestbody := fmt.Sprintf("{" +
" \"id\":" + "\"" + "1234" + "\"," +
" \"status\":" + "\"" + "IDLE" + "\"" +
"}")
return client.Post("https://localhost:8080/service/hello", "application/json", strings.NewReader(requestbody))
}
func doPut(client * http.Client) (resp *http.Response, err error) {
requestbody := fmt.Sprintf("{" +
" \"id\":" + "\"" + "1234" + "\"," +
" \"status\":" + "\"" + "IDLE" + "\"" +
"}")
request, err := http.NewRequest("PUT", "https://localhost:8080/service/hello", strings.NewReader(requestbody))
if err != nil {
return nil, err
}
request.Header.Set("Content-Type", "application/json")
return client.Do(request)
}
func main() {
pool := x509.NewCertPool()
caCertPath := "caroot.pem"
caCrt, err := ioutil.ReadFile(caCertPath)
if err != nil {
log.Fatal("ReadFile err:", err)
return
}
pool.AppendCertsFromPEM(caCrt)
cliCrt, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
if err != nil {
log.Fatal("LoadX509KeyPair err:", err)
return
}
tr := &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: pool,
Certificates: []tls.Certificate{cliCrt},
},
}
client := &http.Client{Transport: tr}
resp, err := doGet(client)
//resp, err := doPost(client)
//resp, err := doPut(client)
if err != nil {
log.Fatal("client error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
log.Println(string(body))
}
相關文章
- SSLSocket實現服務端和客戶端雙向認證的例子服務端客戶端
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- iOS逆向-客戶端認證iOS客戶端
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- Java OAuth 2.0 客戶端程式設計(三):認證碼授權JavaOAuth客戶端程式設計
- ZooKeeper服務發現客戶端--重連認證客戶端
- NodeJS Https HSM雙向認證實現NodeJSHTTP
- 客戶決策 | Go語言設計模式實戰Go設計模式
- Kubernetes客戶端認證(二)—— 基於ServiceAccount的JWTToken認證客戶端JWT
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- 無密碼驗證:客戶端密碼客戶端
- Go gRPC進階-TLS認證+自定義方法認證(七)GoRPCTLS
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- [WCF安全系列]談談WCF的客戶端認證[使用者名稱/密碼認證]客戶端密碼
- 透過程式碼改變客戶端所顯示的語言型別 (轉)客戶端型別
- MVC驗證10-到底用哪種方式實現客戶端服務端雙重非同步驗證MVC客戶端服務端非同步
- 客戶端驗證和onclick事件控制程式碼客戶端事件
- 基於CMPP2.0的Socket客戶端(Java) - JAVA程式語言客戶端Java
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- Go實現雙向連結串列Go
- Kubernetes客戶端認證(三)—— Kubernetes使用CertificateSigningRequest方式簽發客戶端證書客戶端
- 配置郵件客戶端(無SSL/TLS加密)客戶端TLS加密
- 跟我一起學Go系列:Go gRPC 安全認證機制-SSL/TLS認證GoRPCTLS
- 01 . Go語言實現SSH遠端終端及WebSocketGoWeb
- C語言呼叫mysql資料庫API實現簡單的mysql客戶端的功能C語言MySql資料庫API客戶端
- gRPC雙向資料流的互動控制(go語言實現)| gRPC雙向資料流的互動控制系列(1)RPCGo
- ASP.NET Core2利用Jwt技術在服務端實現對客戶端的身份認證ASP.NETJWT服務端客戶端
- 客戶端骨架屏實現客戶端
- 客戶端與伺服器之間雙向通訊的5種方式總結(完整程式碼演示)客戶端伺服器
- 雙向迴圈連結串列基本操作的實現(C語言)C語言
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- nsq客戶端go-nsq有段程式碼看不懂客戶端Go
- Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go
- Redis的Pub/Sub客戶端實現Redis客戶端
- 網頁SSH客戶端的實現網頁客戶端