grpc基于CA的TLS 证书认证


grpc 基于CA的TLS证书认证

 go 1.15 版本开始废弃 CommonName,因此推荐使用 SAN 证书 
 *我使用1.17时已经提示使用SAN证书代替*
 错误提示
	* legacy Common Name field, use SANs instead
	* legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0(go 1.15)

生成证书

CA 证书生成

openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.ca.com" -days 5000 -out ca.crt

Server 证书生成

openssl genrsa -out server/server.key 2048

生成证书

openssl req -new -sha256
-key server/server.key
-subj "/C=CN/ST=Beijing/L=Beijing/O=UnitedStack/OU=Devops/CN=test1.com"
-reqexts SAN
-config <(cat /etc/ssl/openssl.cnf
<(printf "[SAN]\nsubjectAltName=DNS:test1.com,DNS:test2.com"))
-out server/server.csr

签名证书

openssl x509 -req -days 365
-in server/server.csr -CA ca.crt -CAkey ca.key -CAcreateserial
-extfile <(printf "subjectAltName=DNS:test1.com,DNS:test2.com")
-out server/server.crt
client证书 参考server证书生成

[参考资料]
[1]: "证书生成"
[2]:https://www.bookstack.cn/read/eddycjy-grpc/654de6f3ae58c199.md "代码实现"