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

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

Golang SSL TCP socket證書配置

Golang SSL TCP socket證書配置

Go
忽然笑 2021-09-20 11:00:18
我正在創(chuàng)建一個(gè) Go TCP 服務(wù)器(不是 http/s)并且我正在嘗試將其配置為使用 SSL。我有一個(gè) StartCom 免費(fèi) SSL 證書,我正試圖用它來實(shí)現(xiàn)這一點(diǎn)。我的服務(wù)器代碼如下所示:    cert, err := tls.LoadX509KeyPair("example.com.pem", "example.com.key")    if err != nil {        fmt.Println("Error loading certificate. ",err)    }    trustCert, err := ioutil.ReadFile("sub.class1.server.ca.pem")    if err != nil {        fmt.Println("Error loading trust certificate. ",err)    }    validationCert, err := ioutil.ReadFile("ca.pem")    if err != nil {        fmt.Println("Error loading validation certificate. ",err)    }    certs := x509.NewCertPool()    if !certs.AppendCertsFromPEM(validationCert) {        fmt.Println("Error installing validation certificate.")    }    if !certs.AppendCertsFromPEM(trustCert) {        fmt.Println("Error installing trust certificate.")    }    sslConfig := tls.Config{RootCAs: certs,Certificates: []tls.Certificate{cert}}    service := ":5555"    tcpAddr, error := net.ResolveTCPAddr("tcp", service)    if error != nil {        fmt.Println("Error: Could not resolve address")    } else {        netListen, error := tls.Listen(tcpAddr.Network(), tcpAddr.String(), &sslConfig)        if error != nil {            fmt.Println(error)        } else {            defer netListen.Close()            for {                fmt.Println("Waiting for clients")                connection, error := netListen.Accept()我試過切換證書的順序,不包括一些證書等,但輸出openssl s_client -CApath /etc/ssl/certs/ -connect localhost:5555基本上保持不變,verify error:num=20:unable to get local issuer certificate. 有關(guān)完整輸出,請參見此處。我似乎對中間證書做錯(cuò)了什么,但我不知道是什么。我已經(jīng)為此工作了幾天,進(jìn)行了大量的谷歌搜索和搜索,但似乎沒有什么適合我的情況。我已經(jīng)在 Apache 和 HAProxy 中設(shè)置了許多證書,但這確實(shí)讓我感到困惑。
查看完整描述

1 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

該RootCAs字段用于客戶端驗(yàn)證服務(wù)器證書。我假設(shè)您只想提供一個(gè)證書進(jìn)行驗(yàn)證,因此您需要的任何內(nèi)容都應(yīng)該加載到Certificates切片中。


這是一個(gè)最小的例子:


cert, err := tls.LoadX509KeyPair("example.com.pem", "example.com.key")

if err != nil {

    log.Fatal("Error loading certificate. ", err)

}


tlsCfg := &tls.Config{Certificates: []tls.Certificate{cert}}


listener, err := tls.Listen("tcp4", "127.0.0.1:5555", tlsCfg)

if err != nil {

    log.Fatal(err)

}

defer listener.Close()


for {

    log.Println("Waiting for clients")

    conn, err := listener.Accept()

    if err != nil {

        log.Fatal(err)

    }

    go handle(conn)

}

即使您沒有使用 HTTPS,從http.ListenAndServeTLS.


查看完整回答
反對 回復(fù) 2021-09-20
  • 1 回答
  • 0 關(guān)注
  • 466 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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