问题描述

当根据Cloud Service (Extended Support) 文档更新证书 ( https://docs.azure.cn/zh-cn/cloud-services-extended-support/certificates-and-key-vault )时,如果遇见旧的证书(如中间证书,根证书)信息保存在Key Vault Secret中,而更新的时候,只能从Key Vault证书中匹配到服务器证书(叶子证书)时。 而中间证书,根证书会出现如下错误:

出现错误信息为:

在所选密钥保管库中找不到 .cscfg 中定义的一个或多个证书。请确保已将所有证书上传到所选密钥保管库,然后单击下面的刷新以重新验证。如果云服务正在添加基于密钥保管库机密的证书,则必须通过门户以外的方法添加基于机密的证书。

Go
to the selected key vault


Learn more about using
secret based certificates outside of the portal

而在提示的文档中,可以找到这句话

“但如果计划将证书用作机密,则无法验证这些证书的指纹,并且通过门户进行的任何涉及添加机密的更新操作都会失败。”

“ 建议客户使用 PowerShell 或 RestAPI 继续进行涉及机密的更新。”

本文将介绍如何使用REST API来更新证书!

操作步骤

第一步:上传证书到Azure Key Vault

根据证书文档步骤(https://docs.azure.cn/zh-cn/cloud-services-extended-support/certificates-and-key-vault#upload-a-certificate-to-key-vault) ,把PFX证书上传到Key Vault中,然后复制出证书的指纹信息和机密标识:

  • Trumbprint, 证书指纹,具有唯一性,用于判断证书是否一样
  • Secret Identifier,证书在Key Vault中的保存地址,保存的格式为base64加密后的JSON格式,如果是证书文件并且用于Cloud Service Extended Support,它的格式必须是如下的JSON格式:

{

"data": "Your base64 certificate",

"dataType": "PFX",

"password": "optional, 如有密码则填入密码"

}

如:

第二步:获取Cloud Service的信息,调用接口为GET API

参考文档:https://learn.microsoft.com/en-us/rest/api/compute/cloud-services/get?view=rest-compute-2024-07-01&tabs=HTTP

注意,在中国区需要修改Host Endpoint为:management.chinacloudapi.cn

GET https:// management.chinacloudapi.cn /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/cloudServices/{cloudServiceName}?api-version=2022-04-04

需要携带Authorization Token,否则会获得如下错误:

{
"error": {
"code": "AuthenticationFailed",
"message": "Authentication failed. The 'Authorization' header is missing."
}
}

获取Token的方式可以通过浏览器访问Cloud Service(Extended Support)门户,然后通过开发者工具(F12)查看网络请求,从访问Cloud Service的请求头中获取Authorization内容。或者通过az cli获取token

az cloud set --name AzureChinaCloud

az login

az account get-access-token --scope "https://management.core.chinacloudapi.cn/.default" --query accessToken

当成功获取到Cloud Service的信息后,调整 JSON内容:删除Properties中,除了configuration 和 osProfile 外的全部内容。

整理之后JSON格式如下:

{
"name": "cloud service extended support name",
"id": "cloud service (extended) support resource id",
"type": "Microsoft.Compute/cloudServices",
"location": "chinanorth3",
"properties": {
"configuration": "{ServiceConfiguration}",
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "key vault resource id"
},
"vaultCertificates": [
{
"certificateUrl": "key vault Secret Identifier"
},
{
"certificateUrl": "key vault Secret Identifier"
},
{
"certificateUrl": "key vault Secret Identifier"
}
]
}
]
}
}
}

需要修改的地方有两处:

1)configuration内容中Certificates指纹,用第一步中的指纹值替换文件中需要修改的内容

2)osProfile.secrets中certificateUrl值,用第一步中的机密标识URL来替换旧的certificateUrl

准备好以上的内容后,既可以进行第三步,发送PUT请求把新证书更新到Cloud Service(Extended Support)

第三步:更新Cloud Service的信息,调用接口为PUT API

参考文档:https://learn.microsoft.com/en-us/rest/api/compute/cloud-services/create-or-update?view=rest-compute-2024-07-01&tabs=HTTP 

使用第二步中同样的URL,把请求类型修改为PUT,然后把第二步修改的JSON放入Request Body。点击发送,查看请求的状态。

同时,可以回到Cloud Service (Extended Support) Azure门户页面,查看证书是否成功修改。

同时,更深入的验证是通过RDP到云服务的节点中,查看证书信息!

RDP --> 输入“cert” -->  选择“Manage Computer Certificates” -->  查看 Pernonal Certificates

【END】

【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的证书的更多相关文章

  1. Azure开发者任务之二:Cloud Service项目添加到ASP.Net Web中

    假设我们正在把现有的Web应用程序或ASP.Net MVC Web应用程序迁移到云中.在这种情况下,我们需要把云服务添加到现有的Web应用程序或ASP.Net MVC Web应用程序中. 我们有一个W ...

  2. 【Azure 云服务】Azure Cloud Service (Extended Support) 云服务开启诊断日志插件 WAD Extension (Windows Azure Diagnostic) 无法正常工作的原因

    问题描述 在Azure中国区上面创建一个云服务(外延支持)后,根据官方文档(在云服务(外延支持)中应用 Azure 诊断扩展: https://docs.azure.cn/zh-cn/cloud-se ...

  3. 微信小程序调用云函数出错 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -501005, error message Environment not found;

    错误异常: Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud ...

  4. [login] 调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -501000, error message Environment not found;

    按照微信开放文档,创建完云开发项目,运行,点击获取openid,报如下错: [login] 调用失败 Error: errCode: -404011 cloud function execution ...

  5. 【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例

    今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...

  6. [AWS vs Azure] 云计算里AWS和Azure的探究(6) - Amazon Simple Storage Service 和 Microsoft Azure Blob Storage

    这几天Nasuni公司出了一份报告,分析了各个云厂商的云存储的性能,包括Amazon S3,Azure Blob Storage, Google Drive, HP以及Rackspace.其中性能上A ...

  7. Kubernetes集群中Service的滚动更新

    Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ...

  8. Android Service 通知Activity更新界面的方法研究

    Android Service 通知Activity更新界面的方法研究   Android的最重要的组件式service和activity,那么在使用的过程中,我们最常遇到的问题是他们之间的通信问题. ...

  9. 【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)

    问题描述 总所周知,Azure App Service服务会默认提供一个 ***.chinacloudsites.cn为后缀的域名,但是该域名由上海蓝云网络科技有限公司备案,仅用于向其客户提供 Azu ...

  10. spring cloud --- 使用 actuator 热更新【刷新】单机配置文件

    1.前言 分布式微服务想要热更新配置文件,还需要 消息中间件 配合使用 ,一般使用 rabbitMQ 或 Kafka ,这里不解释 . 这篇随笔 只讲解 底层的 单机热更新配置文件 2.环境 spri ...

随机推荐

  1. pytorch-a2c-ppo-acktr-gail 算法代码

    地址: https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail

  2. 《Python数据可视化之matplotlib实践》 源码 第四篇 扩展 第十三章

    图  13.10 import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np mpl.rcParams[&q ...

  3. mybatis-plus系统化学习之更新-AR-主键-service

    1.背景 本节要么很简单,要么不重要,知道就可以了. 2.更新 package com.ldp.demo01; import com.baomidou.mybatisplus.core.conditi ...

  4. Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

  5. Element-UI 中使用rules验证

    第一种:写在data中进行验证 <el-form>:代表这是一个表单 <el-form> -> ref:表单被引用时的名称,标识 <el-form> -> ...

  6. 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理

    使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性.同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率. 下面是一个推荐的目录结构示例: ...

  7. 一文剖析TCP三次握手、四次挥手

    TCP三次握手四次挥手 问题 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6. 顺便说一句,原则上任何数据传输都无法确保绝对可靠, ...

  8. MyBatis日志工厂

    目录 日志工厂 标准日志实现 Log4j 使用步骤: 日志工厂 我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个 数据库相关的操作出现了问题,我们可 ...

  9. OpenCV开发笔记(八十):基于特征点匹配实现全景图片拼接

    前言   一个摄像头视野不大的时候,我们希望进行两个视野合并,这样让正视的视野增大,从而可以看到更广阔的标准视野.拼接的方法分为两条路,第一条路是Sticher类,第二条思路是特征点匹配.  本篇使用 ...

  10. PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024

    即插即用的PlugIR通过LLM提问者和用户之间的对话逐步改进文本查询以进行图像检索,然后利用LLM将对话转换为检索模型更易理解的格式(一句话).首先,通过重新构造对话形式上下文消除了在现有视觉对话数 ...