Go实现tls的通信的简单代码例子
来源:互联网 发布:java简单售票系统 编辑:程序博客网 时间:2024/06/06 04:12
1、创建本地证书和秘钥,创建脚本如下
#!/bin/bashmkdir certsrm -rf certs/*echo "make server cert"openssl req -new -nodes -x509 -out certs/server.pem -keyout certs/server.key -days 3650 -subj "/C=DE/ST=NRW/L=Earth/O=Random Company/OU=IT/CN=www.random.com/emailAddress=921586520@qq.com"
2、server端(sever.go文件内容如下)
package mainimport( "bufio" "crypto/tls" "log" "net")func main() { cert, err := tls.LoadX509KeyPair("certs/server.pem","certs/server.key") if err !=nil{ log.Println(err) return } config := &tls.Config{Certificates: []tls.Certificate{cert}} ln, err := tls.Listen("tcp",":443", config) if err !=nil{ log.Println(err) return } defer ln.Close() for{ conn, err := ln.Accept() if err !=nil{ log.Println(err) continue } go handleConn(conn) }}func handleConn(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 } }}
3、Client端(client.go代码如下)
package mainimport( "crypto/tls" "log")func main() { conf := &tls.Config{ InsecureSkipVerify: true, } conn, err := tls.Dial("tcp","127.0.0.1:443", 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]))}
4、分别运行客户端和服务器,观察实验结果
root@docker1:/home/docker/xu/go-pro/tls# go run server.go hello
root@docker1:/home/docker/xu/go-pro/tls# go run client.go world
5、实验结束
0 0
- Go实现tls的通信的简单代码例子
- gRPC的简单Go例子
- go语言和c++通信的例子
- Go支持https协议的简单例子
- 求大神帮忙关于Openssl实现TLS通信的问题
- netty通信的tls部分
- 一个java和golang(go语言)通信的例子。
- 一个Go语言接口和多操作系统实现的简单例子
- go实现一个简单的游戏服务器框架(lotou)网络通信
- 简单的UDP通信的例子
- 一个简单的Delphi与go lang通讯的例子
- TCP网络通信的简单例子
- UDP网络通信的简单例子
- 一个最简单的Socket通信例子
- 一个最简单的Socket通信例子
- 一个最简单的Socket通信例子
- Java Socket通信的简单例子
- [Java]UDP通信的简单例子
- 1002 【2017.1.17】小X的十滴水
- 337. House Robber III
- Redis单点测试用,安装部署
- 第一次使用java连接mongodb遇到的问题
- java 代码 规范 快捷键
- Go实现tls的通信的简单代码例子
- 由“埃及分数”引入迭代加深搜索
- 剑指offer-面试题9-菲波那切数列
- Redis---String数据类型的操作
- ubuntu 与windows双系统记录
- codeforce B. Bash's Big Day
- LightOJ 1236 Pairs Forming LCM(唯一分解定理)
- iOS手势与点击事件冲突
- 【WPF】给下拉列表ComboBox绑定数据