中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

东海县| 大竹县| 福海县| 南陵县| 互助| 搜索| 喀喇沁旗| 突泉县| 泾源县| 衡阳市| 冀州市| 石城县| 酉阳| 嘉兴市| 常德市| 若羌县| 黑山县| 德清县| 江山市| 宜宾县| 从江县| 天峨县| 马尔康县| 玛多县| 道孚县| 宁乡县| 遵化市| 广河县| 平南县| 滁州市| 南开区| 彭州市| 龙江县| 尖扎县| 阜宁县| 澄城县| 新泰市| 革吉县| 闸北区| 石阡县| 游戏|