我在Bluemix上有一个使用Python构建包的Cloud Foundry应用,过去几个月一直成功地连接并使用绑定到该应用的Watson机器学习(WML)服务。然而,从今天早上开始,当我尝试调用该服务时,收到了一个SSL错误。这个错误可能在今天之前就已经开始了,我只是今天早上才注意到它。
我使用Python的requests库从应用中调用WML。我还尝试使用Postman来调用该服务。
以下是相关的Python代码(几个月来一直正常工作):
import requestsspssUrl = 'https://palbyp.pmservice.ibmcloud.com/pm/v1/{model}'spssModelscore = 'score/bikeride'spssParams = {"accesskey": accessKey, "metadatatype": "score"}spssHeaders = {"Content-Type": "application/json"}spssResults = requests.post(spssUrl.format(model = spssModelscore), data=json.dumps(modelPayload), params=spssParams, headers=spssHeaders)
以下是我看到的错误:
requests.exceptions.SSLErrorSSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
最近有什么变化吗?我是否需要在我的应用/客户端中进行额外的配置才能连接到该服务?
更新
我发现通过禁用SSL验证(在请求中添加verify=False
)可以成功调用WML。
spssResults = requests.post(spssUrl.format(model = spssModelscore), data=json.dumps(modelPayload), params=spssParams, headers=spssHeaders, verify=False)
显然,这不是解决这个问题的正确方法。有没有指导意见?我想知道WML是否最近开始使用一个更新的SSL证书,这个证书不在requests
使用的CA列表中——而且无法验证。
更新
发现SSL证书已经过期了。
回答:
IBM已经安装了一个更新的SSL证书。现在连接正常工作了。