标签:get cert add 生成 htm fail port x509 服务器
TLS(Transport Layer Security,安全传输层),TLS是建立在传输层
TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。
TLS协议主要解决如下三个网络安全问题。
Win版自签证书网址测试使用
http://slproweb.com/products/Win32OpenSSL.html
进入bin目录
1、执行openssl
2、执行genrsa -des3 -out server.key 2048(会生成server.key,私钥文件)
3、创建证书请求:req -new -key server.key -out server.csr (会生成serve.csr)其中common name也就是域名:我填的是xgrpc.com
4、删除密码rsa -in server.key -out server_no_passwd.key
5、执行x509 -req -days 365 -in server.csr -signkey server_no_passwd.key -out server.crt(会生成server.crt)
自此自签证书完成
d
func main(){
//构造TLS凭证
creds,err := credentials.NewServerTLSFromFile("keys\\server.crt","keys\\server_no_passwd.key")
if err != nil {
log.Fatal(err)
}
// 新建gRPC服务器实例,并开启TLS认证
grpcServer := grpc.NewServer(grpc.Creds(creds))
....
}
没有配置证书之前使用 //grpc.WithInsecure()设置禁止安全验证传输
服务端配置证书之后客户端再次访问报错:rpc error: code = Unavailable desc = connection closed
func main() {
//证书验证
creds,err := credentials.NewClientTLSFromFile("keys\\server.crt","xgrpc.com")
if err != nil {
log.Fatal(err)
}
conn,err := grpc.Dial(Address,grpc.WithTransportCredentials(creds))
....
}
go.15 以上已经启用了 CommonName 了,上述的方式生成的证书需要添加GODEBUG=x509ignoreCN=0
这样的环境变量才能正常运行。
否则报错
rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0"
标签:get cert add 生成 htm fail port x509 服务器
原文地址:https://www.cnblogs.com/remixnameless/p/14288193.html