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))
}
相關文章
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- Kubernetes客戶端認證——基於CA證書的雙向認證方式客戶端
- Pulsar客戶端消費模式揭秘:Go 語言實現 ZeroQueueConsumer客戶端模式Go
- NodeJS Https HSM雙向認證實現NodeJSHTTP
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- iOS逆向-客戶端認證iOS客戶端
- Go 實現簡易的 Redis 客戶端GoRedis客戶端
- FTP客戶端c程式碼功能實現FTP客戶端C程式
- 基於c語言的TCP客戶端、服務端基礎程式碼C語言TCP客戶端服務端
- Kubernetes客戶端認證(二)—— 基於ServiceAccount的JWTToken認證客戶端JWT
- Kubernetes客戶端認證(三)—— Kubernetes使用CertificateSigningRequest方式簽發客戶端證書客戶端
- SharePoint Online 認證Net客戶端物件客戶端物件
- 客戶決策 | Go語言設計模式實戰Go設計模式
- https雙向認證HTTP
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- Go gRPC進階-TLS認證+自定義方法認證(七)GoRPCTLS
- gRPC雙向資料流的互動控制(go語言實現)| gRPC雙向資料流的互動控制系列(1)RPCGo
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- 基於c語言的UDP客戶端、服務端二合一基礎程式碼C語言UDP客戶端服務端
- 無密碼驗證:客戶端密碼客戶端
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- java netty 實現 websocket 服務端和客戶端雙向通訊 實現心跳和斷線重連 完整示例JavaNettyWeb服務端客戶端
- 03. 實現客戶端應用程式客戶端
- 跟我一起學Go系列:Go gRPC 安全認證機制-SSL/TLS認證GoRPCTLS
- Go實現雙向連結串列Go
- 01 . Go語言實現SSH遠端終端及WebSocketGoWeb
- Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go
- SpringBoot服務間使用自簽名證書實現https雙向認證Spring BootHTTP
- 如何使用Go語言寫出物件導向風格的程式碼Go物件
- 客戶端與伺服器之間雙向通訊的5種方式總結(完整程式碼演示)客戶端伺服器
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- Keytool配置 Tomcat的HTTPS雙向認證TomcatHTTP
- Go 語言實現 QQ 掃碼登陸Go
- ASP.NET Core2利用Jwt技術在服務端實現對客戶端的身份認證ASP.NETJWT服務端客戶端
- Go語言實現RPCGoRPC
- 何為吊炸天的 Golang 程式碼實現分析《Go 語言原本》Golang
- [譯] Go 語言實戰: 編寫可維護 Go 語言程式碼建議Go
- 使用JWT做RESTful API的身份驗證-Go語言實現JWTRESTAPIGo