【发布时间】:2018-09-08 08:47:54
【问题描述】:
我想通过 Azure Kubernetes 中的 envvars 在我的应用程序中为 MySQL 提供 SSL CA 证书,但我不断收到以下错误日志。
NAME: RollbackError
CODE: HANDSHAKE_SSL_ERROR
MESSAGE: unable to get local issuer certificate
我按照他们在文档中所说的一切,我可以从终端用 MySQL 客户端连接到它,所以证书没问题。
这就是我的 deployment.yml 中的内容:
....
env:
- name: database__connection__ssl__ca
value: "content_of_ssl_ca_cert_file"
....
根据 NodeJS 的 MySQL 和 knexjs 文档,这是正确的做法,它接受字符串而不是文件或文件路径。 有人有什么想法吗?
所以,我终于设法解决了这个“微不足道”的问题。
....
env:
- name: database__connection__ssl__ca
value: "-----BEGIN CERTIFICATE-----\n...\n...\n...-----END CERTIFICATE-----"
....
需要突破线。
【问题讨论】:
-
我从 SSL 证书文件中复制了文本,并将其放入一个环境变量中,该变量创建了连接到数据库所需的对象。如果我在 azure 中禁用 SSL 连接,它的工作良好并且功能正常。我假设证书作为字符串有一些东西。 Azure MySQL SSL -> 我正在处理链接的文章。在第 1 步中,您可以看到 SSL 证书,这就是我正在使用的。
-
好吧,如果您这样做,您需要将其从文本解析为文件或对象
-
根据 mysql 文档,它作为字符串等待它,不需要解析。或者你能给我举个例子吗?
-
我从 ca 文件中复制了内容,这就是我提供的输入内容。编辑:我修改了上面的代码sn-p。
-
终于找到了解决这个问题的办法。您需要提供如下输入:
"-----BEGIN CERTIFICATE-----\n....\n....\n-----END CERTIFICATE-----"。需要换行。
标签: mysql azure ssl kubernetes azure-aks