第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中獲取遠(yuǎn)程 ssl 證書

在 golang 中獲取遠(yuǎn)程 ssl 證書

Go
牛魔王的故事 2021-10-25 18:32:32
我想通過 TLS 接收 TCP 連接。我想驗證客戶端證書并使用它來驗證客戶端到我的應(yīng)用程序。Go 有標(biāo)準(zhǔn)crypto/tls包。它可以驗證客戶端/服務(wù)器證書。但是我找不到獲取遠(yuǎn)程(客戶端)證書詳細(xì)信息的方法,例如通用名稱。
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗 獲得超8個贊

必須調(diào)用crypto/tls/Conn.Handshake。然后你可以讀取對等證書:tlsconn.ConnectionState().PeerCertificates[0].Subject.CommonName


查看完整回答
反對 回復(fù) 2021-10-25
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗 獲得超8個贊

使用 crypto/tls 時,您可以查詢 ConnectionState 的任何 Conn 對象:


func (c *Conn) ConnectionState() ConnectionState

ConnectionState 結(jié)構(gòu)包含有關(guān)客戶端證書的信息:


type ConnectionState struct {

        PeerCertificates            []*x509.Certificate   // certificate chain presented by remote peer

}

該x509.Certificate應(yīng)該相當(dāng)簡單的與工作。


在服務(wù)器請求客戶端身份驗證之前,您必須使用服務(wù)器證書、客戶端 CA(否則您必須手動驗證信任鏈,您真的不想要)和 tls.RequireAndVerifyClientCert 配置連接。例如:


// Load my SSL key and certificate

cert, err := tls.LoadX509KeyPair(settings.MyCertificateFile, settings.MyKeyFile)

checkError(err, "LoadX509KeyPair")


// Load the CA certificate for client certificate validation

capool := x509.NewCertPool()

cacert, err := ioutil.ReadFile(settings.CAKeyFile)

checkError(err, "loadCACert")

capool.AppendCertsFromPEM(cacert)


// Prepare server configuration

config := tls.Config{Certificates: []tls.Certificate{cert}, ClientCAs: capool, ClientAuth: tls.RequireAndVerifyClientCert}

config.NextProtos = []string{"http/1.1"}

config.Rand = rand.Reader


查看完整回答
反對 回復(fù) 2021-10-25
  • 3 回答
  • 0 關(guān)注
  • 473 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號