You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为猫狗分类TensorFlow Serving模型实现SSL/TLS安全通道

没问题,我帮你整理一套完整的TensorFlow Serving客户端切换到SSL/TLS安全通道的实现方案,从证书准备到代码修改再到服务端配置都给你说清楚:

完整实现TensorFlow Serving客户端SSL/TLS安全通信

1. 先搞定SSL证书文件

要启用SSL通信,你需要准备几个关键证书文件(测试环境可以用OpenSSL自签,生产环境建议用权威CA签发的证书):

  • ca.pem:CA根证书,用于客户端验证服务器身份
  • client.pem(可选):客户端证书,服务端开启双向认证时需要
  • client.key(可选):客户端私钥,和客户端证书配对使用

用OpenSSL生成自签证书的命令参考:

# 生成CA私钥和根证书
openssl req -x509 -newkey rsa:4096 -days 365 -nodes -keyout ca.key -out ca.pem

# 生成客户端私钥
openssl genrsa -out client.key 4096

# 生成客户端证书签名请求(CSR)
openssl req -new -key client.key -out client.csr

# 用CA根证书签名客户端CSR,生成客户端证书
openssl x509 -req -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem -days 365

2. 修改客户端代码(替换非安全通道)

你原来的非安全通道代码是:

host, port = hostport.split(':')
channel = implementations.insecure_channel(host, int(port))

现在替换成SSL安全通道的代码,分两种常用场景:

场景1:单向SSL认证(最常用)

只验证服务器身份,不需要客户端提供证书,代码如下:

import grpc
from tensorflow_serving.apis import prediction_service_pb2_grpc

# 拆分主机和端口
host, port = hostport.split(':')
server_address = f"{host}:{port}"

# 加载CA根证书
with open('ca.pem', 'rb') as f:
    trusted_root_certs = f.read()

# 创建SSL凭证
ssl_creds = grpc.ssl_channel_credentials(root_certificates=trusted_root_certs)

# 建立安全通道
channel = grpc.secure_channel(server_address, ssl_creds)

# 后续创建预测stub的逻辑和之前一致
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

场景2:双向SSL认证(更高安全级别)

如果服务端要求验证客户端身份,需要同时加载客户端证书和私钥:

import grpc
from tensorflow_serving.apis import prediction_service_pb2_grpc

host, port = hostport.split(':')
server_address = f"{host}:{port}"

# 加载所有证书文件
with open('ca.pem', 'rb') as f:
    trusted_root_certs = f.read()
with open('client.pem', 'rb') as f:
    client_cert_chain = f.read()
with open('client.key', 'rb') as f:
    client_private_key = f.read()

# 创建双向SSL凭证
ssl_creds = grpc.ssl_channel_credentials(
    root_certificates=trusted_root_certs,
    certificate_chain=client_cert_chain,
    private_key=client_private_key
)

# 建立安全通道
channel = grpc.secure_channel(server_address, ssl_creds)

# 创建预测stub
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

3. 配置TensorFlow Serving服务端开启SSL

客户端改完后,服务端必须同步开启SSL才能正常通信,启动服务时需要指定SSL配置:

启动命令示例

tensorflow_model_server \
  --port=8500 \
  --rest_api_port=8501 \
  --model_name=cat_dog_classifier \
  --model_base_path=/path/to/your/cat_dog_model \
  --ssl_config_file=/path/to/ssl_config.json

SSL配置文件(ssl_config.json)

  • 单向认证配置:
{
  "server_cert": "/path/to/server.pem",
  "server_key": "/path/to/server.key",
  "client_auth_type": "NONE"
}
  • 双向认证配置(对应客户端的双向认证场景):
{
  "server_cert": "/path/to/server.pem",
  "server_key": "/path/to/server.key",
  "client_auth_type": "REQUIRE",
  "client_ca_cert": "/path/to/ca.pem"
}

4. 测试验证

运行修改后的客户端脚本,如果能正常调用模型完成猫/狗预测,说明SSL配置成功。如果遇到证书错误,先检查证书文件路径是否正确,确保客户端用的CA根证书和服务端的CA是同一个。

内容的提问来源于stack exchange,提问作者ReInvent_IO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:40:35