client
creds = grpc.ssl_channel_credentials(root_certificates=open(ca_cert_path, 'rb').read())
channel = grpc.secure_channel(domain + ':' + str(port), creds)
server
server_credentials = grpc.ssl_server_credentials([(server_key, server_cert)], server_ca, False)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
# Add secure port
server.add_secure_port(domain + ':' + str(port), server_credentials)
server.start()
server.wait_for_termination()
server logs highlights
TCP: 00000170AA577ED0 READ error=UNAVAILABLE: End of TCP stream [type.googleapis.com/grpc.status.int.grpc_status='14'] CANCEL PINGS: UNKNOWN:Secure read failed READY -> SHUTDOWN (close_transport, OK) notifying watcher 00000170AA4C08C0: READY -> SHUTDOWN (event_engine) WindowsEventEngine::00000170AA0E8260 cancelling shutdown why=UNKNOWN: Secure read failed
client logs highlights
Handshake failed with fatal error SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED. Channel state changed: ChannelConnectivity.TRANSIENT_FAILURE E0111 14:27:13.888000000 236656 src/core/ext/filters/client_channel/channel_connectivity.cc:186] watch_completion_error: CANCELLED