Azure Function通过Key Vault配置EF Core使用Azure MySQL证书
解决Azure MySQL CA证书存入Key Vault及Pomelo EF Core配置问题
你遇到的错误根源是场景用错了:从Azure MySQL下载的PEM是CA根证书,仅用于验证服务器身份,本身没有私钥;而Key Vault的「证书」类型要求必须包含私钥(这是给双向SSL认证场景下的客户端证书用的)。
正确的操作步骤如下:
- 将下载的纯证书内容PEM文件存入Key Vault的**机密(Secret)**类型,而非「证书」类型,这里不需要私钥,直接上传即可。
- 给Azure Function配置Key Vault访问策略,赋予其读取该机密的权限。
- 在Azure Function中配置Pomelo EF Core:
- 从Key Vault获取CA证书的内容,保存到函数的临时目录(比如
/tmp/mysql-ca.pem)。 - 使用如下格式的连接字符串:
Server=你的数据库地址;Uid=数据库用户名;Pwd=数据库密码;SslMode=VerifyCA;SslCert='/tmp/mysql-ca.pem'
- 从Key Vault获取CA证书的内容,保存到函数的临时目录(比如
补充说明:如果你的业务场景是双向SSL认证(服务器需要验证客户端证书),才需要准备包含私钥的客户端证书;但Azure MySQL默认只要求客户端验证服务器身份,用下载的CA根证书即可满足需求。
内容的提问来源于stack exchange,提问作者Jason_Hough
相关产品推荐
相关产品推荐

