SoFunction
Updated on 2025-03-05

Golang simple tls protocol usage complete example

This article describes the usage of golang simple tls protocol. Share it for your reference, as follows:

Generate a private key:

openssl genrsa -out  2048

Generate a certificate:

openssl req -new -x509 -key  -out  -days 3650

https:

Copy the codeThe code is as follows:
package main
import (
    "io"
    "net/http"
    "log"
)
func HelloServer(w , req *) {
    (w, "hello, world!\n")
}
func main() {
    ("/hello", HelloServer)
    err := (":8080", "", "", nil)
    if err != nil {
        ("ListenAndServe: ", err)
    }
}

Tip: Please do not forget to use https to access, otherwise Chrome will download a file as follows:

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

TLS Server:

Copy the codeThe code is as follows:
package main
import (
    "log"
    "crypto/tls"
    "net"
    "bufio"
)
func main() {
    ()
    cer, err := tls.LoadX509KeyPair("", "")
    if err != nil {
        (err)
        return
    }
    config := &{Certificates: []{cer}}
    ln, err := ("tcp", ":8000", config)
    if err != nil {
        (err)
        return
    }
    defer ()
    for {
        conn, err := ()
        if err != nil {
            (err)
            continue
        }
        go handleConnection(conn)
    }
}
func handleConnection(conn ) {
    defer ()
    r := (conn)
    for {
        msg, err := ('\n')
        if err != nil {
            (err)
            return
        }
        println(msg)
        n, err := ([]byte("world\n"))
        if err != nil {
            (n, err)
            return
        }
    }
}

TLS Client:

Copy the codeThe code is as follows:
package main
import (
    "log"
    "crypto/tls"
)
func main() {
    ()
    conf := &{
        InsecureSkipVerify: true,
    }
    conn, err := ("tcp", "127.0.0.1:8000", conf)
    if err != nil {
        (err)
        return
    }
    defer ()
    n, err := ([]byte("hello\n"))
    if err != nil {
        (n, err)
        return
    }
    buf := make([]byte, 100)
    n, err = (buf)
    if err != nil {
        (n, err)
        return
    }
    println(string(buf[:n]))
}

I hope this article will be helpful to everyone's Go language programming.