【发布时间】:2021-01-31 22:28:11
【问题描述】:
我有一个 Debian GCP 实例,我正在尝试运行 Python gRPC 服务器。我的实例有一个静态 IP,我正在尝试在我的远程实例(服务器)和本地客户端之间建立一个安全通道。
我在服务器上生成了自签名的 OpenSSL 证书,并且在客户端上使用了相同的证书。生成我用过的:
openssl req -newkey rsa:2048 -nodes -keyout ML.key -x509 -days 365 -out ML.crt
我的服务器是这样设置的(.key 和 .crt 文件加载了 open 和 'rb'):
server_credentials = grpc.ssl_server_credentials(((private_key, certificate_chain,),))
self.server.add_secure_port('0.0.0.0:%d' % self.port, server_credentials)
self.server.start()
我的客户设置为:
host = '78.673.121.16' #this is the instance's static IP
port = 9063
certificate_chain = __load_ssl_certificate() #this loads the certificate file
# create credentials
credentials = grpc.ssl_channel_credentials(root_certificates=certificate_chain)
# create channel using ssl credentials
channel = grpc.secure_channel('{}:{}'.format(host, port), credentials)
然后我继续提出请求。
响应我的请求,在服务器上我遇到了以下错误:
E1017 17:21:22.964227087 1881 ssl_transport_security.cc:1807] No match found for server name: 78.673.121.16.
我已尝试将证书的通用名称 (CN) 更改为 localhost、0.0.0.0 和 78.673.121.16,但无济于事。
有什么建议吗?
【问题讨论】:
标签: ssl openssl ssl-certificate grpc grpc-python