亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何在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

青岛市| 海城市| 专栏| 本溪| 乐至县| 田阳县| 上栗县| 濮阳县| 遂平县| 太仆寺旗| 塘沽区| 乡城县| 芦溪县| 东乌| 宁安市| 金塔县| 西青区| 滁州市| 大同县| 大田县| 汉源县| 综艺| 调兵山市| 盐边县| 晋宁县| 土默特右旗| 萝北县| 新密市| 贵州省| 罗甸县| 福泉市| 岳阳县| 微山县| 项城市| 沂南县| 神池县| 延吉市| 青浦区| 梁河县| 铜山县| 鹤岗市|