Go语言中文网,每天致力于分享编码,开源等知识,欢迎关注我,会有意想不到的收获!
项目地址:https://github.com/EDDYCJY/go-grpc-example
在前言的前一章,我们提出了一个问题。如何保证证书的可靠性和有效性?您如何确定您的服务器和客户端的证书是正确的?
为了保证证书的可靠性和有效性,这里可以引入CA颁发的根证书的概念。它符合X.509标准。
根证书根证书是属于根证书颁发机构(CA)的公钥证书。我们可以通过验证CA的签名来信任它。武汉的任何一个日日夜夜都可以得到CA的证书(包括公钥)来验证其证书(客户端和服务器)。
它包含以下文件:
公钥生成密钥。KEY 2048代key OpenSSL REQ Kramp-Karrenbauer新Kramp-karren Bauer X509 Kramp-karren Bauer DAYS 7200 Kramp-karren Bauer KECA。克拉普-卡伦鲍尔。PEM填写信息国家名称(逃生室:冠军字母代码锦标赛)Kim Hye Yoon]:州或省名称(全名)[]:地方名称(例如,城市)[]:组织名称(例如,公司)[]:组织单位名称(例如,部门)Kim Hye Yoon曹政奭:常用名称(例如,完全合格的主机名)Kim Hye Yoon曹政奭3360 Go Kramp-karren Bauer GRPC Kramp-karren Bauer示例电子邮件地址Kim Hye Yoon曹政奭
opensslreq Kramp-karren Bauer new Kramp-karren Bauer key server . key Kramp-karren Bauer out server . CSR填写信息
国家名称(2个字母代码)[]:州或省名称(全名)[]:地方名称(例如,城市)[]:组织名称(例如,公司)[]:组织单位名称(例如,部门)[]:通用名称(例如,完全限定的主机名)[]: go-grpc-示例电子邮件地址[] 3360请输入以下“额外”属性,以便与您的证书请求质询密码3360 CSR,曹政奭,Kim Hye Yoon一起发送主要功能是CA将使用CSR文件进行签名,这样攻击者就无法伪装或篡改原始证书。
由CA颁发的Openssl x509,Kramp-Karrenbauer req,Kramp-Karrenbauer sha256,Kramp-Karrenbauer ca ca.pem,Kramp-Karrenbauer cakeyca . key Kramp-Karrenbauer,California,Kramp-Karrenbauer,days 3650,Kramp-karren Bauer,in server,CSR,Kramp-karren Bauer,out server,pemclient,生成密钥
OpenSSL param Kramp-karren Bauer genkey Kramp-karren Bauer name secp 384 r 1元Kramp-Karrenbauer outclient.key生成CSR
Opensslreq Kramp-Karrenbauer新的Kramp-karren Bauer key client . key Kramp-karren Bauer out client . CSR是基于CA颁发的。
OpenSSL X509 Kramp-karren Bauer REQ Kramp-karren Bauer sha 256 Kramp-karren Bauer caca . PEM Kramp-karren Bauer CAKECA。密钥Kramp-Karrenbauer可以创建连续Kramp-Karrenbauer天数3650 Kramp-karren Bauer in client . CSR Kramp-karren Bauer out client . PEM组织目录。到目前为止,我们已经生成了一堆文件,请按照以下目录结构存储它们:
$ tree conf conf -ca.key -ca.pem -ca.srl -client-client.csr -client.key -client.client.但我留着它是为了真正的演示(敲黑板)。
GRPC将开始编写gRPC并转换上一章中的代码。目标是基于CA的TLS认证。
Servertls。LoadX509KeyPair():从证书相关文件中读取并解析信息,以获得证书公钥和密钥对x509。NewCertPool():创建新的空certpool.appendcertsfrompem():尝试解析传递的pem编码证书。如果解析成功,会添加到CertPool中,方便以后使用凭证。NewTLS:构建基于TLS的TransportCredentials选项TLS。Config:Config结构用于配置服务器中的TLS客户端或服务器,使用三个Config配置项:
(1元)证书:设置证书链,可以包含一个或多个证书。
(密室逃脱:冠军联赛)客户端认证:要求客户端的证书必须经过验证。以下参数可根据实际情况选择:
(侏罗纪世界3)ClientCAs:设置根证书的集合,验证模式为ClientAuth中设置的模式。
客户
大多数客户端与服务器保持一致。不同的是,当客户端请求服务器时,客户端将使用根证书和ServerName来验证服务器。
简单的过程大致如下:
客户端通过请求获得服务器的证书,并使用CA认证的根证书来检查ServerName是否可用和有效。当然,当tls。设置了RequireAndVerifyClientCert模式,服务器也将使用CA认证的根证书来检查客户端证书的可靠性和有效性。也就是两边都会检查,大大保证了安全性。
验证是否重新启动server.go并执行client.go,以查看响应结果是否正常。
总之,在本章中,我们使用CA颁发的根证书来颁发客户端和服务器的证书。进一步提高它们之间的通信安全性。
这次是真的做了!
请参考这一系列示例代码。
Kramp-karren Bauer Gog RPC Kramp-karren Bauer示例本系列作者:油炸鱼,原始授权发布