openssl
Robust, full-featured Open Source Toolkit for the Transport Layer Security (TLS) https://www.openssl.org/
常用命令
生成 RSA 私钥 openssl genrsa -out server.key 2048
从 RSA 私钥生成公钥 openssl rsa -in server.key -pubout > server.pub
查看指定网站证书 openssl s_client -showcerts -connect <host>:<port>
为 gRPC 生成自签署证书
生成根证书(root CA, CA short for certificate authority),ca.key 是私钥切勿泄露
sh
openssl genrsa -out ca.key 2048
openssl req -days 3560 -new -x509 -key ca.key -subj "/C=CN/ST=GD/L=SZ/O=MyCompany/CN=Root CA" -out ca.crt其中 C、ST、L、O、CN 值可自行指定。
生成某个微服务服务端证书并使用 CA 证书签发,server.key 是私钥切勿泄露。 注意这里指定了 CN=subdomain.MyCompany.com ,后续代码中需要用到。
sh
openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=GD/L=SZ/O=MyCompany/CN=subdomain.MyCompany.com" -out server.csr
openssl x509 -days 3560 -req -extfile <(printf "subjectAltName=DNS:subdomain.MyCompany.com") -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
openssl rsa -in server.key -pubout > server.pub查看证书内容 openssl x509 -in server.crt -noout -text
服务端 credentials.NewServerTLSFromFile 函数分别指定服务端证书和私钥 server.crt server.key 客户端 credentials.NewClientTLSFromFile 函数分别指定服务端证书和域名 server.crt,CA 证书签发服务端证书时指定的域名值
gRRC 和 gRPC-gateway 测试均可行。
参考
转换 PKCS8 为 PEM
sh
openssl pkcs8 -nocrypt -in AuthKey.p8 -out privateKey.pem
openssl ec -in privateKey.pem -pubout -out publicKey.pem参考
