之前我们讲的所有请求都是 HTTP 请求,在 net/http 包还提供了 http.ListenAndServeTLS()
方法,用于处理 HTTPS 连接请求:
通过源码我们知道,调用此方法需要四个参数,除了 addr
和 handler
之外,还要有 证书文件
和 对应的私钥文件
,比如 certFile
对应 SSL 证书文件存放路径, keyFile
对应证书私钥文件路径。如果证书是由权威机构签发的, certFile
参数指定的路径必须是存放在服务器上的经由 CA 认证过的 SSL 证书。
在开发环境下,我们要自己生成证书。在 Go 中提供了生成证书的方法,打开命令行,进入项目路径,运行下面命令(命令中跟的是 Go 安装路径):
运行后会生成 cert.pem 和 key.pem 两个文件。接着编写 main.go 文件:
运行程序,访问 http://localhost:8080/
提示无法访问,接着访问 https://localhost:8080/
,因为浏览器无法验证证书,会显示提示信息,我们点击继续访问就可以访问该网站了,可以看到网页显示结果如下: