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

企业网络调用Google Vision API出现TLS握手错误怎么解决

问题根因

你遇到的503报错本质是SSL证书验证失败,从调试日志可以看到明确错误:SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED。

  • 企业内部代理会对所有HTTPS流量做中间人卸载,用企业自签名根证书替换目标站点的官方证书
  • Google Cloud Python官方客户端底层默认走gRPC协议,gRPC不会读取操作系统的受信任根证书库,无法识别企业自签名证书
  • Postman等REST客户端默认调用系统根证书库,你已经提前将企业自签名根证书导入系统受信任列表,所以Postman调用正常
解决方案

前置准备

先找企业IT部门获取代理使用的自签名根证书(PEM格式,后缀一般为.crt或.pem),存到本地路径,比如C:\internal_proxy_root_ca.pem

方案1:配置gRPC使用自定义根证书(生产环境推荐)

修改代码,初始化客户端时传入企业自签名根证书创建的SSL凭证:

from __future__ import print_function
from google.cloud import vision
import os
import grpc

os.environ['http_proxy'] = "http://internalproxyserver.com:8080"
os.environ['https_proxy'] = "http://internalproxyserver.com:8080"
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = r"C:\abc.json"

# 读取企业自签名根证书
with open(r"C:\internal_proxy_root_ca.pem", 'rb') as f:
    root_ca_content = f.read()
# 生成自定义SSL凭证
ssl_credentials = grpc.ssl_channel_credentials(root_certificates=root_ca_content)
# 初始化客户端时传入SSL凭证
client = vision.ImageAnnotatorClient(credentials=ssl_credentials)

content = b'iVBORw0KGgoAAAANSUhEUgAAAGQAAAAZCAYAAADHXotLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAENElEQVRo3u1ay0u6Sxh+PjWzLI0vxRZWdCEqughGCbWxVu2jG7WIdm3CRYuoP6CoKLpA0CYIg6hNQRTYoqhlBQVBFF1Nu2lmRqBl71n9Bj1mxzodz89zvgcGZuad533Hefzme2eUIyKCgN8GImEJBEEECIIIgggQBBEEYRgcHATHcSFlZGSEjdHpdB+OcTgcYfkfFYPB8GlMjuMgl8tRXFyMnp4ePD4+hp231+vF0NAQysvLoVQqIZfLUVRUhN7eXrhcrn9HEfoBDA8PE4CQMjY2xsbo9foQu0gkIqfTSWazmXie/9DHn0tFRQURUcScrKwsstlsIXO22WxUWFgYlqfRaGh3d5eiDfyUo9PTU0pKSiIAxPM8nZ2dBdl9Ph9NTk6yD9zU1ERutztojFKpZPzNzc2g0tbWFiTIZ5z5+XkyGAwsVmNjYxDH6/VSSUkJs7e0tNDS0hKtrq6SyWQiiURCAEilUpHdbo9NQQIXR6PRfGhfWVlhi9DZ2fkl/vj4OMnlcjIajRFxHh4eSKFQEABKSEig19dXZuvr62Pz6OrqCok1PT0d9MURBAnD/2rMwKfk7u6O9aenpxMAkslk5HA4Qnjv7++Um5tLAEgsFtP19XXUBPnPZllEhJubGwBAQkICeJ4HABwfH8NqtQIAqqurkZqaGsLlOA4NDQ0AAL/fj42NjajNW/JPOPX5fFhfXw/p39/fj4h/e3sLjuOC+mpqarC2thYR/+7uDoODgzg/PwcAtLe3QywWAwBOTk7YuIyMjLA+MjMzWT2QE5OCuFwuGI3GqD4RH4kIAC0tLRgaGmJtj8fD6iqVKqw/tVrN6k9PT7EtyN8Fz/NYXFwM6ktJSfmyH7FYDI7j8PLyAqlUCgBITk5mdofDEZZ7f3/P6gqFIrYF0Wg0bP8OxOrqKmpra/+SHxcXh6qqqm+L+Pz8jJmZGczOzmJmZgZOpxPLy8sAgJycHMa5uLgI6y/Qlp2dHVsHw98xy/L7/ZSfn/9hlqXVagkAxcfHh82y8vLyhCzrM0xNTUEmk6GysjKyOyGRCKWlpaxts9lYvaOjg12d9Pf3h3BnZ2dxdHQEAKirq0NaWtr/+x3y+vqKra2toL6dnR14vV54vd6I/QS+L+x2O3Q6HQDAZDLBbDbj4OAAAwMDuL6+Rn19PaRSKSwWC0ZHR9k2GJgQxMyWNTc3x7aBXyU9PZ0WFhbYmNbWVna1AoAkEgmVlpaS2+0ms9lMKpUqorssvV4fccyJiQlmS05OJovFwmxWq5UKCgrCxlGr1bS9vR31u6wf2bIuLy9xdXUV1Ge1WtkB7NcZ5Pn5mbXf3t6wt7cHn88Hu93+acbz3ZhtbW1obm6GUqmEx+MJSjS0Wi12d3cxMDCAsrIyJCUlITExEYWFheju7sbh4SH0en3UdwdO+JOD8AOVAEEQQRAB38QfQtVPbkCRvTgAAAAASUVORK5CYII='

image = vision.Image(content=content)
texts = client.text_detection(image=image).text_annotations

for text in texts:
    print('\n"{}"'.format(text.description))

方案2:临时关闭证书验证(仅测试排查用,生产环境禁止使用)

在代码的环境变量配置段添加以下配置,跳过gRPC的证书验证:

os.environ['GRPC_TLS_SKIP_ALL_SERVER_VERIFICATION'] = '1'

方案3:改用REST接口调用

如果不想处理gRPC的证书配置,可以直接调用Google Vision服务的公开REST接口,逻辑和你用Postman调用完全一致,不会出现证书验证问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:05