首页 > 解决方案 > 在 Kubernetes 集群上对 AutoDesk-Forge 进行身份验证时出现 SSL 证书错误

问题描述

我们有一个使用 kubernetes 部署的 Web 应用程序,最近(21 年 8 月 9 日这一周)我们突然开始使用 forge API 出现错误。在我们的开发环境中一切都按预期工作(仅使用 Docker 容器,没有 kubernetes)。

我们正在使用较旧的 forge api(forge-apis npm 包;我们计划升级到 autodesk.forge.designautomation,但现在根本没有时间/资源)。

我们主要使用模型派生 API,但问题可能都与身份验证步骤有关:

const oAuth = new ForgeSDK.AuthClientTwoLegged(config.forgeClientId, config.forgeClientSecret, [
  'data:read',
  'data:write',
  'data:create',
  'bucket:read',
  'bucket:create'],
   true)
token = await oAuth.authenticate()

很多时候,这将失败并出现以下错误:

错误 [ERR_TLS_CERT_ALTNAME_INVALID]:主机名/IP 与证书的替代名称不匹配:主机:developer.api.autodesk.com。不在证书的替代名称中:DNS: .beta.doxo.com, DNS:beta.doxo.com at Object.checkServerIdentity (tls.js:288:12) at TLSSocket.onConnectSecure (_tls_wrap.js:1485:27) at TLSSocket.emit (events.js:321:20) 在 TLSSocket._finishInit (_tls_wrap.js:918:8) 在 TLSWrap.ssl.onhandshakedone (_tls_wrap.js:688:12) {原因:“主机:developer.api。 autodesk.com. 不在证书的 altnames 中:DNS: .beta.doxo.com, DNS:beta.doxo.com", host: 'developer.api.autodesk.com', cert: { subject: [Object: null原型] { CN: ' .beta.doxo.com' }, 发行者: [Object: null 原型] { C: 'US', O: 'Amazon', OU: 'Server CA 1B', CN: 'Amazon' } ,.beta.doxo.com, DNS:beta.doxo.com', infoAccess: [Object: null prototype] { 'OCSP - URI': [Array], 'CA Issuers - URI': [Array] }

然而,并非总是如此。有时它会执行到后面的各个步骤(例如,通过 BucketsAPI 创建存储桶、上传到存储桶或将文件转换为 SVF)。它会走多远似乎完全随机,并且通常挂在这些步骤之一并停止接收响应,直到我们的连接超时错误抛出。

有时当它进入 SVF 转换步骤时,它会抛出一个不同的证书相关错误:

错误:SSL 证书错误:NavigatorWatcher.waitForNavigation 的 ERR_CERT_COMMON_NAME_INVALID (/opt/model_service/node_modules/puppeteer/lib/NavigatorWatcher.js:76:20) 在 processTicksAndRejections (internal/process/task_queues.js:97:5) 在异步页面。转到(/opt/model_service/node_modules/puppeteer/lib/Page.js:465:19)

其他时候,在 SVG 转换过程中,它会抛出一个 JSON 循环引用错误,同样与证书有关:

TypeError: Converting circular structure to JSON --> 从带有构造函数'Object'的对象开始---属性'issuerCertificate'在JSON.stringify()处关闭循环

到目前为止,我最好的评估是 kubernetes DNS 存在问题 - 但我无法弄清楚为什么 1)这会突然开始发生(这已经稳定了好几年)和 2)为什么这种行为似乎有些随机。

非常感谢任何输入,谢谢。

标签: node.jssslkubernetesdnsautodesk-forge

解决方案


我们确实在 2018 年 12 月迁移到 TLS 1.2(在此处查看更多信息),您能否确认您的应用程序和环境已为此设置?

此外,有时我们必须更新认证,您的环境是否有可能将旧证书保留在缓存中?


推荐阅读