Write a simple HTTPS server use Go

admin 2024年8月14日13:25:50评论7 views字数 842阅读2分48秒阅读模式

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

Write a simple HTTPS server use Go

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

Write a simple HTTPS server use Go

Write a simple HTTPS server use Go

0x03 使用 Wireshark 进行 HTTPS 请求报文捕获并分析

1
tcp.port == 8820

0x04 后记

写这篇文章主要是搭建一个建议的HTTPS Server端,方便配合 Wireshark 分析 HTTPS 的通信流程。

- source:tonghuaroot.com

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月14日13:25:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Write a simple HTTPS server use Gohttp://cn-sec.com/archives/3067282.html

发表评论

匿名网友 填写信息