• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > golang简单tls协议用法完整示例

golang简单tls协议用法完整示例

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了golang,golang语言,golang教程,golang下载,golang官网等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了golang简单tls协议用法。分享给大家供大家参考,具体如下:

生成私钥:

openssl genrsa -out key.pem 2048

</div>

生成证书:

openssl req -new -x509 -key key.pem -out cert.pem -days 3650

</div>

https:
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)
    }
}</div>

提示: 访问请勿忘记使用https开头,否则chrome会下载一个文件如下:

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

TLS Server:
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
        }
    }
}</div>

TLS Client:
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]))
}</div>

希望本文所述对大家Go语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • golang 函数以及函数和方法的详解及区别
  • 利用Golang如何调用Linux命令详解
  • 利用Golang生成整数随机数方法示例
  • golang针对map的判断,删除操作示例
  • golang实现sql结果集以json格式输出的方法
  • Golang使用zlib压缩和解压缩字符串
  • Golang算法问题之整数拆分实现方法分析
  • Golang算法问题之数组按指定规则排序的方法分析
  • Golang算法之田忌赛马问题实现方法分析
  • golang struct扩展函数参数命名警告解决方法

相关文章

  • Windows下使用go语言写程序安装配置实例
  • Go语言中的流程控制结构和函数详解
  • Go语言中的方法定义用法分析
  • Go语言常用字符串处理方法实例汇总
  • Golang排列组合算法问题之全排列实现方法
  • 使用Go语言简单模拟Python的生成器
  • 理解Golang中的数组(array)、切片(slice)和map
  • Go语言里的结构体文法实例分析
  • golang实现通过smtp发送电子邮件的方法
  • CentOS 32 bit安装golang 1.7的步骤详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言排序与接口实例分析
    • Go语言实现机器大小端判断代码分享
    • 使用Go语言实现微信公众平台
    • go语言操作redis连接池的方法
    • Go语言eclipse环境搭建图文教程
    • Go语言中的if条件语句使用详解
    • Golang极简入门教程(二):方法和接口
    • golang解析xml的方法
    • Go语言转换所有字符串为大写或者小写的方法
    • 服务器端Go程序对长短链接的处理及运行参数的保存

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有