本文实例讲述了golang简单tls协议用法。分享给大家供大家参考,具体如下:
生成私钥:
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])) }
希望本文所述对大家Go语言程序设计有所帮助。
我需要对使用TLS协议连接的F5机器工作。为此,我构建了一个使用HTTPsURLConnection对象的类。 然后,我下载了F5证书文件,使用JDK密钥工具创建密钥库,并使用它尝试将连接设置为使用TLS协议: (我没有被你抓住……) 代码似乎在快速传递,但是当我这样做的时候: 我得到。。。 “javax.net.ssl.SSLHandshakeException:sun.security.val
本文向大家介绍vuejs简单验证码功能完整示例,包括了vuejs简单验证码功能完整示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了vuejs简单验证码功能。分享给大家供大家参考,具体如下: 使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun运行上述代码,可得到如下运行结果: 希望本文所述对大家vue.js
我们正在编写一个应用程序,它必须使用HTTPS与几个服务器通信。它需要与AWS通信(使用AWS库),还需要与我们使用TLS1.2的一些内部服务通信。 我首先将HttpClient更改为使用TLS1.2SSLContext: 并且(通过spring)将这个SchemeRegistry注入到DefaultHttpClient对象中,但是这样做会从AWS得到错误,因此我假设(我可能错了)AWS不支持TL
本文向大家介绍JS document文档的简单操作完整示例,包括了JS document文档的简单操作完整示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS document文档的简单操作。分享给大家供大家参考,具体如下: 运行效果: 文档的操作:主要是为了让用户可以上传文档; 基本内容: 增加节点, 删除节点 方法:刷新式文本操作 使用innerHTML: div.innerHT
在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。 在举例子之前,我们需要安装Google的Chrome浏览器。 为什么要使用Chrome浏览器而不是IE呢?因为IE实在
在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。 在举例子之前,我们需要安装Google的Chrome浏览器。 为什么要使用Chrome浏览器而不是IE呢?因为IE实在