我正在尝试创建一个ARM模板,该模板创建Application Gateway并使用密码上传动态数量的SSL证书。创建App Gateway并不是一个大问题,但是我一直坚持将动态数量的SSL证书和密码从Powershell传递到ARM模板。
Powershell设置为将[0..n]证书与安全字符串中的密码配对发送到ARM模板和参数文件。 App Gateway的资源定义要求每个SSL证书的密码都必须是安全字符串,但是似乎没有办法将参数定义为数组或对象,并将元素/属性定义为安全字符串类型。
有一个通过Key Vault传递VM密码的示例,在该示例中,您通过Powershell将密码/证书上传到Key Vault,然后在资源定义中使用“引用”作为密码值。但是,这似乎不适用于Application Gateway上的SSL证书,并且我遇到错误“解析值后,遇到意外字符:{”,紧接“密码:”
有人知道一种将动态数量的安全字符串传递到ARM模板,或通过ARM模板将动态数量的SSL证书和密码上传到Application Gateway的方法吗?
答案 0 :(得分:0)
好吧,这样做的一种方法是传入一组密钥保险库秘密名称,在调用嵌套模板时,您需要使用这些密钥库秘密名称来获取证书数据并逐个迭代(因为您只能将KV秘密解析为初始化\启动新模板(而不是模板内部)时的值)。不需要安全的字符串,因为没有秘密传递给模板。
没有干净的方法可以做到这一点。要么需要迭代器,要么例如使用powershell来启动相同的模板x次(每个应用程序网关1次)并将值馈送到模板中
我将证书作为base64编码的字符串存储在Key Vault中,以将其传递到应用程序网关定义
但是我不理解问题的全部前提。应用程序网关不在乎您将securestring还是仅将string放入ssl证书属性中。