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)
}
}
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
}
}
}
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]))
}
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.