【应用服务 App Service】App Service证书导入,使用Key Vault中的证书
问题描述
正常情况下,如果需要为应用服务安装SSL证书,可以在证书准备好的情况,通过门户上传即可,详细步骤可以参考微软官方文档(在 Azure 应用服务中添加 TLS/SSL 证书:https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate), 但是由于Global Azure和中国区Azure的不同之处,在中国区微软云无法直接在门户中导入Key Vault中的证书。 以下是两个版本页面之间的不同之处:
中国区 Azure | 国际版 Azure |
那要这样才能在中国区中导入Key Vault中的SSL证书呢? 使用PowerShell脚本完成导入完成。(把KeyVaule中的证书转变为Secrets后,配置到App Service)
执行步骤
1) 在Key Vault中把证书已PFX/PEM格式导出(其实导出证书后,可以直接在App Service中上传证书,只是这样就没有Key Vault来保护证书)
(导航路径: Key Vault --> Settings Certificates --> Certificates Name --> Current Version)
2) 把证书导入到Key Vault中的Secrets中。自定义一个Key Vault Secret Name并复制出key vault的资源ID,第三步会使用到。
- 选择Upload Options为Certificate
- 上传第一步中下载的证书
- 输入证书名:mysitecertfile(第三步 Powershell命令中需要)
3)修改指定的参数,运行PowerShell命令,把证书导入到App Service中
Connect-AzureRmAccount -Environment AzureChinaCloud $location = "<resource location>"
$ResourceGroupName = "<app service resource group name>"
$AppServicePlanName = "/subscriptions/<subscription id>/resourceGroups/<app service resource group name>/providers/Microsoft.Web/serverfarms/<server farm id>"
$KeyVault = "/subscriptions/<subscription id>/resourcegroups/<key vault resource group name>/providers/microsoft.keyvault/vaults/<key vault name>"
$KeyVaultSecert = "<key vault secret name>" $newCert = "NewCertificate" $PropertiesObject = @{
keyVaultId= $KeyVault
keyVaultSecretName= $KeyVaultSecert
serverFarmId= $AppServicePlanName
} New-AzureRmResource -Name $newCert -Location $location `
-PropertyObject $PropertiesObject `
-ResourceGroupName $ResourceGroupName `
-ResourceType Microsoft.Web/certificates `
-Force
以上值都可以在相对应的资源中查看:
- $AppServicePlanName:在应用服务的Overview页面中,通过App Service Plan链接进入,在Porperties(左侧目录)页面复制Resource ID值
- $KeyVault:在Key Vault的Overview页面中,点击Porperties(左侧目录)页面复制Resource ID值
- 如果登录后,有多个订阅信息,可以通过命令Select-AzureRmSubscription -Subscription '<your subscription name>' 来指定订阅
- 在执行绑定Key Vault证书时,如果遇见"The service does not have access to '/subscriptions/............/microsoft.keyvault/vaults/...' Key Vault.Please make sure that you have granted necessary permissions to the service to perform the request operation. 需要执行以下两个步骤来为App Service复制访问Key Vault的授权
- 在App Service中开启Identity, System Assigned功能,并复制出Object ID用于在Key Value中赋予权限
2. 在Key Vault中的Access Policies中为App Service赋予访问权限
4)访问站点,验证证书。
参考资料
在 Azure 应用服务中添加 TLS/SSL 证书:https://docs.azure.cn/zh-cn/app-service/configure-ssl-certificate
使用应用服务和 Azure Functions 的 Key Vault 引用: https://docs.azure.cn/zh-cn/app-service/app-service-key-vault-references
关于 Azure Key Vault: https://docs.azure.cn/zh-cn/key-vault/general/overview
Azure Key Vault 有助于解决以下问题:
- 机密管理 - Azure Key Vault 可以用来安全地存储令牌、密码、证书、API 密钥和其他机密,并对其访问进行严格控制
- 密钥管理 - Azure Key Vault 也可用作密钥管理解决方案。 可以通过 Azure Key Vault 轻松创建和控制用于加密数据的加密密钥。
- 证书管理 - Azure Key Vault 也是一项服务,可用来轻松预配、管理和部署公用和专用传输层安全性/安全套接字层 (TLS/SSL) 证书,以用于 Azure 以及内部连接资源。
为何使用 Azure Key Vault?
集中管理应用程序机密
在 Azure Key Vault 中集中存储应用程序机密就可以控制其分发。 Key Vault 可以大大减少机密意外泄露的可能性。 有了 Key Vault,应用程序开发人员就再也不需要将安全信息存储在应用程序中。 无需将安全信息存储在应用程序中,因此也无需将此信息作为代码的一部分。 例如,如果某个应用程序需要连接到数据库, 则可将连接字符串安全地存储在 Key Vault 中,而不是存储在应用代码中。
应用程序可以使用 URI 安全访问其所需的信息。 这些 URI 允许应用程序检索特定版本的机密。 这样就不需编写自定义代码来保护存储在 Key Vault 中的任何机密信息。
最新文章
- JavaScript 中 Number()、parseInt()、parseFloat()的区别
- Eclipse关联源码
- Muzli – 所有你需要的设计灵感都在这
- Oracle 小案例
- 通过MSSQL连接服务器连接至Oracle数据库
- ckeditor添加插入flv视频的插件
- 爬虫Larbin解析(二)——sequencer()
- Hibernate的查询语言之HQL(二)——Hibernate查询的from字句
- ionic入门之基本布局
- 安卓请求服务器js文件下载到本地,版本号就下载
- 微信小程序实操-image height:auto问题,url地址报错,“不在以下合法域名列表中”问题等
- python——函数
- 使用SwitchToThisWindow时不切换问题
- AUDIOqueue 为什么会播放一段时间就听不到声音
- 转发: windows如何管理内存
- HTML5效果:Canvas 实现圆形进度条并显示数字百分比
- H5C301
- 583. Delete Operation for Two Strings
- js正则表达式验证身份证号和密码
- Debug method
热门文章
- vue +signalR
- 刷题[HFCTF2020]EasyLogin
- 《Web安全攻防渗透测试实战指南》 各类型 SQL注入 实验过程整理
- @Autowired,@Resource,@Qualifier,@Primary,@Inject的作用和区别
- Java基础——消息队列
- Spring学习(一)--Spring的设计与整体架构
- Centos-网络下载文件-wget
- 小伙伴问我:如何搭建Maven私服?我连夜肝了这篇实战文章!!
- Linux操作系统(第二版)(RHEL 8/CentOS 8)
- 基于SpringAop的鉴权功能