91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在golang中使用tls協議

發布時間:2021-04-14 17:44:17 來源:億速云 閱讀:538 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關如何在golang中使用tls協議,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

生成私鑰:

openssl genrsa -out key.pem 2048

生成證書:

openssl req -new -x509 -key key.pem -out cert.pem -days 3650

https:

package main
import (
    "io"
    "net/http"
    "log"
)
func HelloServer(w http.ResponseWriter, req *http.Request) {
    io.WriteString(w, "hello, world!\n")
}
func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

提示: 訪問請勿忘記使用https開頭,否則chrome會下載一個文件如下:

dotcoo-air:tls dotcoo$ cat /Users/dotcoo/Downloads/hello | xxd
0000000: 1503 0100 0202 0a                        .......

TLS Server:

package mainimport (    "log"    "crypto/tls"    "net"    "bufio")func main() {    log.SetFlags(log.Lshortfile)    cer, err := tls.LoadX509KeyPair("cert.pem", "key.pem")    if err != nil {        log.Println(err)        return    }    config := &tls.Config{Certificates: []tls.Certificate{cer}}    ln, err := tls.Listen("tcp", ":8000", config)     if err != nil {        log.Println(err)        return    }    defer ln.Close()    for {        conn, err := ln.Accept()        if err != nil {            log.Println(err)            continue        }        go handleConnection(conn)    }}func handleConnection(conn net.Conn) {    defer conn.Close()    r := bufio.NewReader(conn)    for {        msg, err := r.ReadString('\n')        if err != nil {            log.Println(err)            return        }        println(msg)        n, err := conn.Write([]byte("world\n"))        if err != nil {            log.Println(n, err)            return        }    }}
TLS Client:
復制代碼 代碼如下:
package mainimport (    "log"    "crypto/tls")func main() {    log.SetFlags(log.Lshortfile)    conf := &tls.Config{        InsecureSkipVerify: true,    }    conn, err := tls.Dial("tcp", "127.0.0.1:8000", conf)    if err != nil {        log.Println(err)        return    }    defer conn.Close()    n, err := conn.Write([]byte("hello\n"))    if err != nil {        log.Println(n, err)        return    }    buf := make([]byte, 100)    n, err = conn.Read(buf)    if err != nil {        log.Println(n, err)        return    }    println(string(buf[:n]))}

關于如何在golang中使用tls協議就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜阳市| 双辽市| 纳雍县| 民丰县| 加查县| 嘉兴市| 攀枝花市| 汝阳县| 陵川县| 合川市| 固安县| 泸溪县| 盘锦市| 舞阳县| 金秀| 土默特右旗| 米脂县| 新晃| 开鲁县| 平定县| 隆林| 牟定县| 平罗县| 申扎县| 石门县| 巩义市| 张北县| 白水县| 罗田县| 杨浦区| 万山特区| 濮阳市| 锦屏县| 龙泉市| 蒲城县| 洪泽县| 马边| 宿州市| 合山市| 晋中市| 泗洪县|