golang https

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 build编译代码。

$ go build simple_https.go

运行

$ ./simple_https

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

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

时间: 2024-10-31 14:06:30

golang https的相关文章

golang https server分析

https: HTTPS是http安全版本的实现,在http与tcp之间加了一层ssl/tls安全传输协议 为了防止请求被监听.篡改.冒充,在tls实现过程中引入了数字证书机制,数字证书由第三方权威机构提供保证. 数字证书原理是采用非对称加密生成一对公钥.私钥,服务端保存私钥,下发公钥给客户端,由于非对称加密计算量比较大, 所以https通信过程中,通过客户端与服务端的握手交互产生三次随机码,从而生成一个相对安全的对称加密密码,密码通过非对称加密下发给客户端,从而完成加密通信 https本质上还

Golang版protobuf编译

官方网址: https://developers.google.com/protocol-buffers/ (需要FQ) 代码仓库: https://github.com/google/protobuf  (C++) https://github.com/golang/protobuf  (Golang) https://developers.google.com/protocol-buffers/docs/gotutorial (英文版教程) 本文以下部分按照英文版教程操作(windows  

创建超小的Golang docker 镜像

原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.正如DockerPool在免费Docker电子书Docker -- 从入门到实践中这样提到的: 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具

GOlang eclipse install

http://golang.org/dl/ 下载golang https://codeload.github.com/GoClipse/goclipse/tar.gz/v0.8.1 解压 安装eclipse go 插件 http://goclipse.github.io/releases/ 勾选 GoClipse 下载GDB for windows http://www.equation.com/servlet/equation.cmd?fa=gdb

mac 安装golang

mac golang 安装 1. 下载golang [https://golang.org/dl/]() 2. 安装 tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz 3. 添加环境变量 设置GOROOT 和 GOPATH vim $HOME/.profile #!/bin/zsh #GOROOT export PATH=$PATH:/usr/local/go/bin #GOPATH export GOPATH=$HOME/Gowork exp

初探go-golang语言初体验

2017/2/24 一.初体验 1.环境 wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz cat <<'_EOF' >>/etc/profile #golang export PATH=$PATH:/usr/local/go/bin export GOPATH=/opt/go _EOF source 

CPS

http://www.yinwang.org/blog-cn/2014/04/18/golang/ https://en.wikipedia.org/wiki/Continuation https://en.wikipedia.org/wiki/Continuation https://en.wikipedia.org/wiki/Continuation-passing_style

清晰架构(Clean Architecture)的Go微服务: 事物管理

为了支持业务层中的事务,我试图在Go中查找类似Spring的声明式事务管理,但是没找到,所以我决定自己写一个. 事务很容易在Go中实现,但很难做到正确地实现. 需求: 将业务逻辑与事务代码分开. 在编写业务用例时,开发者应该只需考虑业务逻辑,不需要同时考虑怎样给业务逻辑加事务管理.如果以后需要添加事务支持,你可以在现有业务逻辑的基础上进行简单封装,而无需更改任何其他代码.事务实现细节应该对业务逻辑透明. 事务逻辑应该作用于用例层(业务逻辑) 不在持久层上. 数据服务(数据持久性)层应对事务逻辑透

Go --- 基础介绍

目录 Go语言 Go语言介绍 Go语言特性 应用领域 Go语言项目 Go语言架构 Go环境搭建 Go集成环境安装(ide) Go解释器安装 Go语言 Go语言介绍 go---golang 2009年 开发 公司推出的编程语言 python 1989年 龟叔 java 1990年 现在被甲骨文收购了, Go是静态强类型语言,是区别于解析型语言的编译型语言 解析型语言:源代码是先翻译为中间代码,然后由解释器对代码进行解释执行 编译型语言:源代码编译生成机器语言,然后由机器直接执行机器码即可执行 Go