0x00 前言
为了研究HTTPS的通信原理,随决定实现一个简易的 HTTPS 服务器,用最精简的代码可以专注于针对某一个 HTTPS 请求的研究。话不多说,直接生成自签名证书,上 Golang 代码梭哈。
0x01 生成自签名证书
用于测试的工作目录:
1
|
/home/ec2-user/test/tls
|
可以使用如下命令生成自签名证书:使用该命令生成 private key
1
|
openssl genrsa -out server_private_key.pem 2048
|
使用该命令可以生成一个 certificate
1
|
openssl req -new -x509 -key server_private_key.pem -out server.crt -days 1095
|
0x02 服务端代码
如下代码用于实现 HTTPS 服务端
使用如下命令可以对 Golang 的代码进行格式化
1
|
go fmt main.go
|
示例代码
12345678910111213141516171819 |
package mainimport ( "fmt" "log" "net/http")func test(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "tonghuaroot")}func main() { http.HandleFunc("/1.txt", test) err := http.ListenAndServeTLS(":8820", "server.crt", "server_private_key.pem", nil) if err != nil { log.Fatal("ListenerAndServe:", err) }} |
使用如下命令可以运行 HTTPS 服务器
1
|
go run main.go
|
0x03 使用 Wireshark 进行 HTTPS 请求报文捕获并分析
1
|
tcp.port == 8820
|
0x04 后记
写这篇文章主要是搭建一个建议的HTTPS Server端,方便配合 Wireshark 分析 HTTPS 的通信流程。
- source:tonghuaroot.com
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论