目录

https

TLS Server

TLS Client


生成私钥:

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 main
import ("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 main
import ("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协议 使用实例相关推荐

  1. SSL/TLS 协议简介与实例分析

    作者:drinkey 以前读RFC时总结的一篇文章,主要介绍了SSL/TLS协议的相关知识,包括协议本身以及简单的密码学概念,以及用实例解析了HTTP over SSL的协商过程,在最后简要列出了SS ...

  2. 最简单的启动Docker实例Mesos Golang Framework

    工作了很长时间最近有时间第一次写,希望支持 如果大家了解Mesos,就知道Mesos是经典的两层调度,官网的架构图(http://mesos.apache.org/documentation/late ...

  3. 简单了解SSL/TLS协议

    今天小编就为大家带来一篇关于SSL/TLS协议的文章.小编觉得挺不错的,为此分享给大家做个参考.一起跟随小编过来看看吧.  TLS名为传输层安全协议(Transport Layer Protocol) ...

  4. C++:实现量化如何建立一个期限结构,并为一个简单的FRA远期利率协议测试实例

    C++:实现量化如何建立一个期限结构,并为一个简单的FRA远期利率协议测试实例 #include <ql/qldefines.hpp> #if !defined(BOOST_ALL_NO_ ...

  5. 在Ubuntu 16.04.3 TLS上玩转tls协议的简单demo

    目的 熟悉openssl生成密钥和证书对,熟悉go中crypto/tls的用法 名词解释 PEM - Privacy Enhanced Mail,打开看文本格式,以"-–BEGIN-&quo ...

  6. Golang简单语法

    Golang简单语法 文章目录 Golang简单语法 GO语言 简介 Golang的格式检查 注释 主函数模板 `变量` 输入和输出语句 变量的类型 变量的定义和赋值 常量 流程控制 `函数` 内置函 ...

  7. python 发送邮件正文字体设置_python 文字 坐标python smtplib模块发送SSL/TLS安全邮件实例...

    python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. smtp协议的基本命令包括: HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail f ...

  8. golang中http协议实现

    golang中http协议实现 写了一个爬虫,发现出现了socket泄露的情况.百度了一下发现是缺少了Response.Body.Close(),所以导致连接 没有被正常的关闭.也没有被gc回收.下面 ...

  9. TLS协议分析 (九) 现代加密通信协议设计

    六. TLS协议给我们的启发 - 现代加密通信协议设计 在看了这么多的分析和案例之后,我们已经可以归纳出加密通信协议设计的普遍问题,和常见设计决策, 设计决策点: 四类基础算法 加密/MAC/签名/密 ...

最新文章

  1. 秦州:西瓜书 + 南瓜书 吃瓜系列 12. 聚类
  2. vue无缝滚动的插件开发填坑分享
  3. mabatisplus怎么给实体类自定义属性_如果你的角色属性可以自定义,你会怎么点?...
  4. python去哪里学-杭州python编程入门去哪学?
  5. android launcher主要功能_[Android] 自动收取蚂蚁森林能量
  6. Docker相关的项目
  7. [SpringSecurity]基本原理_过滤器加载过程
  8. [转载] PYTHON 网络编程
  9. Android App的破解技术有哪些?如何防止反编译?
  10. 通过示例理解数据库相关概念(五、无损连接,无损分解,依赖保持性等)
  11. 自动化的机器学习:5个常用AutoML 框架介绍
  12. ffmpeg 截取切割视频报错
  13. 计算机毕业设计ssm大学生日常行为评分管理系统9gl38 (1)系统+程序+源码+lw+远程部署
  14. kubernetes Pod 污点与容忍
  15. HighlightPlus物体自发光
  16. android客户端功能,推荐一个功能齐全的【玩Android客户端】
  17. 光子映射光子追踪学习分享
  18. 使用es6--对象数组的多种去重方式
  19. AtCoder Beginner Contest 167 F.Bracket Sequencing
  20. StataJournal来啦!随便看(2001-2020)更新到2020年第2期

热门文章

  1. 用 Windows Live Writer 2009 为我们的博客园写博客(图)
  2. 男人心疼女人的十种方式
  3. koa 接口返回数据_一文搞定 Koa 中间件实现原理
  4. TLE5012的使用和3线SPI通信(SSC)说明
  5. PCB铜箔厚度、线宽与允许通多电流大小的关系
  6. win7如何添加开机启动程序(开机就自动运行打开)
  7. Kubernetes + CRI + Kata + Firecracker
  8. python requests.packages.urllib3问题记录
  9. flink source code
  10. 一切皆文件的编程思想