Golang之双向认证

栏目: 服务器 · 发布时间: 5年前

内容简介:此篇文章主要介绍https用Golang生成证书和Golang实现https认证的过程,至于ssl/tls相关的知识点,我在文章末尾会附上我个人觉得对读者有用的文章。客户点包含ca.crt,服务端包含server.key和server.crt;客户端:客户端生成一个随机数random-client,传到服务器端;

此篇文章主要介绍https用Golang生成证书和Golang实现https认证的过程,至于ssl/tls相关的知识点,我在文章末尾会附上我个人觉得对读者有用的文章。

单向验证过程:

客户点包含ca.crt,服务端包含server.key和server.crt;

客户端:客户端生成一个随机数random-client,传到服务器端;

服务端:服务器端接收消息之后,生成一个随机数random-server和包含公钥的证书,一起回馈给客户端;

客户端:客户端收到的东西原封不动,加上premaster secret(通过random-client、random-server 经过一定算法生成的数据),再一次送给服务器端,这次传过去的东西是经过服务端的公钥进行加密后数据;

服务端:服务端经过私钥(server.key),进行解密,获取 premaster secret(协商密钥过程);

此时客户端和服务器端都拥有了三个要素:random-client、random-server和premaster secret,安全通道已经建立,以后的交流都会校检上面的三个要素通过算法算出的session key;而双向认证过程相当于客户端和服务端反过来再执行认证、加解密、协商一遍。

证书生成方式:

1. openssl工具生成:

第一步,生成ca密钥和ca证书

openssl genrsa -out ca.key 2048
# 添加 -subj 是为了省去创建请求之后的交互
openssl req -new nodes -key ca.key -subj "//CN=nzh.com" -days 5000 -out ca.crt

第二步,生成server密钥和证书

openssl genrsa -out server.key 2048
# //CN必须添加,服务端的域名,或者hosts文件中ip的别名,等同于localhost
openssl req -new -key server.key -subj "//CN=server" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000

第三步,生成client密钥和证书

openssl genrsa -out client.key 2048
openssl req -new -key server.key -subj "//CN=client" -out client.csr
echo extendedkeyUsage=clientAuth > ./extfile.cnf
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile ./extfile.cnf -out client.crt -days 5000

2. Golang代码生成:

第一步,生成证书之前,先构造出证书结构体,并初始化相应的参数;

Golang之双向认证

构造证书请求结构体

第二步,进行证书签名,如果不是CA证书,则加载待签名的证书;

Golang之双向认证

加载待签名证书

第三步,进行证书签名,图中46行和49行主要区别生成CA自签名证书还是生成CA证书签名;

Golang之双向认证

证书签名过程

最后生成证书目录结构如下:

Golang之双向认证

证书目录结构

Golang代码实现双向认证过程:

服务器端:

双向认证过程中,只要结构体实现了ServeHTTP结构就相当于实现一个handler;

加载服务端的公钥和私钥用于解密客户端发送过来的随机字符;

加载CA证书是为了验证客户端的证书是否合格;

Golang之双向认证

服务端代码

客户端:

客户端公钥,私钥和CA证书处理等同于服务端证书处理,然后发送请求,打印返回值;

Golang之双向认证

客户端代码

后续会继续补充curl命令以及整个实现源码。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新媒体革命——在线时代的媒体、公关与传播

新媒体革命——在线时代的媒体、公关与传播

仇勇 / 电子工业出版社 / 2016-2-1 / CNY 50.00

这既是传统媒体的大裂变年代,也是在线媒体开启的新闻业的黄金时代。 信息流动的新法则不仅改变了媒体业,也在重塑公关、传播和商业的面貌。总之,这个世界的连接方式不仅不再相同,而且这一改变不可逆转。在这个全新重启的在线时代里,无论是信息的获取还是商业本身,信任都变得比以往更重要。 从告别传统媒体的那一刻起,我就有着两个小小的“野心”:一是探寻适合在线时代的媒体生产方式;二是让优质内容有权获得......一起来看看 《新媒体革命——在线时代的媒体、公关与传播》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具