grpc认证
go版本小于1.15 的配置方式
1、制作私钥 (.key)
$ openssl genrsa -out server.key
$ openssl ecparam -genkey -name secp384r1 -out server.key
2、自签名公钥(x509) (PEM-encodings .pem|.crt)
$ openssl req -new -x509 -sha256 -key server.key -out server.pem –
days 3650
大于1.15需要使用SAN协议进行配置
SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析
- ca.conf和server.conf配置
- 生成ca密钥,得到ca.key openssl genrsa -out ca.key 4096
- 生成ca证书签发请求,得到ca。csr openssl req -new -sha256 -out ca.csr -key ca.key -config ca.conf
- 生成ca根证书,得到ca.crt openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
- 生成server.key openssl genrsa -out server.key 2048
- 生成证书签发请求 openssl req -new -sha256 -out server.csr -key server.key -config server.conf
- 配置ca.crl序列号文件 openssl x509 -req -in ca.csr -out ca.crt -CA ca.crt -CAkey ca.key -CAcreateserial
- 用CA证书生成展馆用户证书 得到server.crt openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -in server.csr -out server.pem -extensions req_ext -extfile server.conf
···
// 客户端
creds, _ := credentials.NewClientTLSFromFile("../../server.pem", "localhsot") //参数一 公钥 参数二 是配置里写的DNS
opts = append(opts, grpc.WithTransportCredentials(creds))
···
grpc.Dial(Address, opts...)
// 服务端
creds, _ := credentials.NewServerTLSFromFile("../../server.pem", "../../server.key") // 放入公钥 私钥
opts = append(opts, grpc.Creds(creds))
s.Serve(listen)
网友评论