Go支持https协议的简单例子

我们知道除了http方式访问网页之外,还有一种加密的https方式。Go语言的net/http包中包含了这种https页面访问方式的支持。net/http包中的ListenAndServeTLS就是提供这个功能的。我们可以先看一下这个函数的原型。

func ListenAndServeTLS(addr string, certFile string, keyFile string, handler Handler) error

从上面的函数原型我们可以看出,其实和http方式的差别就在于需要提供一对公钥文件certFile和私钥文件keyFile。

我们在linux下面可以使用下面的命令来生成一对测试的公钥和私钥文件。

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

然后我们把cert.keykey.pem到拷贝到一个目录https_demo下面,然后再在这个目录下面创建一个simple_https.go文件,代码如下:

package main
 
import (
    "io"
    "log"
    "net/http"
)
 
func helloHandler(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "hello world!")
}
 
func main() {
    http.HandleFunc("/hello", helloHandler)
    err := http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil)
    if err != nil {
        log.Fatal("ListenAndServeTLS:", err.Error())
    }
}

运行:

go run https.go

这时,监听本地端口8080,打开浏览器访问 https://localhost:8080/hello 就可以看到结果了。

其实和普通的http比起来,就多了一对公钥和私钥而已。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏清风

SVN 以及自动部署配置 原

2332
来自专栏移动端周边技术扩展

https和http连接过程

第一次:建立连接时,客户端发送syn(syn=j)包到服务器,并进入syn_sent状态,等待服务器确认。 第二次:服务器收到syn包,必须确认客户端的syn...

871
来自专栏Albert陈凯

2018-10-11 Java 分布式应用追踪系统 skywalking (APM(应用性能监控)系统)Document

SkyWalking: 针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, M...

2672
来自专栏云计算与大数据

研发:http协议,什么是混合内容

混合内容在以下情况下出现:初始 HTML 内容通过安全的 HTTPS 连接加载,但其他资源(例如,图像、视频、样式表、脚本)则通过不安全的 HTTP 连接加载。...

1173
来自专栏云计算教程系列

如何在CentOS 7上安装和配置ownCloud

ownCloud是一个文件共享服务器,允许您将个人内容(如文档和图片)集中存储在此位置,就像Dropbox一样。与ownCloud的不同之处在于它是免费的开源软...

7550
来自专栏cmazxiaoma的架构师之路

MyEclipse使用Git进行Push to Upstream报错 学习笔记

962
来自专栏小白安全

小白博客 CryKeX:Linux内存加密密钥提取工具

CryKeX特性 1. 跨平台 2. 简单实用 3. 交互性强 4. 兼容性/可移植性强 5. 应...

3658
来自专栏云计算教程系列

如何在Ubuntu 18.04上为用户目录设置vsftpd

FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多普通网民希望通过htt...

1110
来自专栏漏斗社区

CTF| 吃个鸡,一起破流量分析题吧!

流量分析题是CTF杂项类常见的一种考点,考察我们分析网络流量包的能力。一般flag隐藏在某个数据包里面,或者需要从中提取一个文件出来等等,还有wifi的握手包,...

4985
来自专栏惨绿少年

SSH服务详解

第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Wo...

3380

扫码关注云+社区

领取腾讯云代金券