首页 > 其他分享 >【Azure Cloud Service】使用Key Vault Secret添加.CER证书到Cloud Service Extended Support中

【Azure Cloud Service】使用Key Vault Secret添加.CER证书到Cloud Service Extended Support中

时间:2024-10-14 20:36:00浏览次数:1  
标签:Extended Service 证书 -- Secret Key Cloud

问题描述

因为Key Vault的证书上传功能中,只支持pfx格式的证书,而中间证书,根证书不能转换为pfx格式,只能是公钥证书格式 cet 或者 crt,能通过文本工具直接查看base64编码内容。

如一个证书链文件中可以看见中间证书,根证书:

 

当把包含完成证书链的证书PFX上传到Key Vault certificates中后,certificates只会显示服务器证书的指纹,导致无法直接在Cloud Service(Extended Support)的配置文件中修改。

所以,如果中间证书,根证书需要安装到Cloud Service (Extended Support) 中,要先把中间证书,根证书放置在Key Vault Secrets中,然后调用Cloud Service API更新证书和配置Secrets Identifier URL来完成证书配置。

 

操作步骤

第一步:准备中间证书和根证书的cer 文件

(* 如果已经有中间证书的cer/crt 文件,用记事本查看证书Base64编码内容则可以跳过第一步)

查看PFX证书及证书链信息:

mmc certmgr.msc /CERTMGR:FILENAME="C:\Users\... \Downloads\mykey.pfx"

选中中间证书-> Details -> Copy to File

在打开的向导窗口中,点击Next,选择 "Base-64 encoded X.509 (.CER)“ --》设置保存路径 --》 导出成功

用记事本打开,查看证书Base64编码内容

(重复以上操作,把根证书也保存为CER文件)

 

(非常重要)第二步:把证书内容JSON格式化后,通过az cli命令设置到Key Vault Secret中

(这一步不能通过门户完成)

把证书的Base64编码内容填入JSON格式的data中

{
"data": "Your base64 certificate",
"dataType": "PFX",
"password": ""
 }

然后把JSON内容保存为一个文件,使用az keyvault secret set   --file “” --encoding base64  添加到Key Vault中

注意:可以使用证书指纹作为机密名称,以方便更好的关联到证书信息

## 设置Key Vault机密

##intermediate
az keyvault secret set  --vault-name <key value name> --name <thumbprint>  --file ".\SSL\intermediate.txt" --encoding base64  

##root
az keyvault secret set  --vault-name <key value name> --name <thumbprint>  --file ".\SSL\root.txt" --encoding base64  

执行完成后,从返回结果中获取到 id 值(Secret Identifier URL).

完成以上内容后,复制出指纹值和Secret ID URL,就可以通过Cloud Service (Extended Support)的API更新证书。

 

第三步:获取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)同时,使用第二步中的机密标识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 

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

 

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

* 如果遇见证书格式不对错误,需要检查Key Vault Secret中保存的内容是否是正确的JSON格式。

格式不对的错误信息:

{
  "error": {
    "code": "CertificateImproperlyFormatted",
    "message": "The data retrieved from https://XXXXXXXXX.vault.azure.cn/secrets/XXXXX/7eXXXX is not deserializable into JSON."
  }
}

 

 

 

 

【END】

标签:Extended,Service,证书,--,Secret,Key,Cloud
From: https://www.cnblogs.com/lulight/p/18465399

相关文章

  • 微服务02 Kafka消息队列, Dubbo, Springcloud微服务框架, Nacos
    3.6Kafka部署kafka下载链接http://kafka.apache.org/downloads#清华源https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/kafka版本格式kafka_<scala版本>_<kafka版本>#示例:kafka_2.13-2.7.0.tgz官方文档:http://kafka.apache.org/quickstart#二进制安装......
  • 微服务03 微服务sentinel, springcloudgateway
    6Sentinel6.1Sentinel介绍和工作机制6.1.1微服务流量治理组件介绍随着微服务的流行,服务和服务之间的调用导致服务的稳定性问题变得越来越重要。雪崩问题:微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,即雪崩。解决雪崩问题的常见方式有四种:1......
  • 【最新原创毕设】基于SpringCloud的一站式热点推荐平台+23649(免费领源码)可做计算机毕
    目 录摘要1绪论1.1选题背景与意义1.2开发现状1.3论文结构与章节安排2 开发环境及相关技术介绍2.1MySQL数据库2.2 Tomcat服务器2.3 Java语言2.4 SpringCloud框架介绍3 一站式热点推荐平台系统分析3.1可行性分析3.1.1技术可行性分析3.1......
  • Understanding Astrology APIs: Powering the Future of Astrological Services
    UnderstandingAstrologyAPIs Astrologyhasevolvedbeyonditstraditionalroots,seamlesslyblendingwithmoderntechnologytoprovideaccurateandpersonalizedastrologicalservices.Oneofthekeyinnovationsbehindthisshiftistheuseof Astrolog......
  • Spring Cloud 常用组件详解
    概述SpringCloud是一套微服务架构的开发工具,它为开发者提供了在分布式系统(尤其是微服务架构)中常见的那些模式的实现,例如服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、决策竞选、分布式会话等等。这些模式都是围绕着微服务架构这一核心理念......
  • 【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的
    问题描述当根据CloudService(ExtendedSupport)文档更新证书(https://docs.azure.cn/zh-cn/cloud-services-extended-support/certificates-and-key-vault)时,如果遇见旧的证书(如中间证书,根证书)信息保存在KeyVaultSecret中,而更新的时候,只能从KeyVault证书中匹配到服务......
  • SpringCloud入门(六)Nacos注册中心(下)
    一、Nacos环境隔离Nacos提供了namespace来实现环境隔离功能。  nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离,例如不同namespace的服务互相不可见。使用NacosNamespace环境隔离步骤:1.在Nacos控制台可以创建namesp......
  • 【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的
    问题描述当根据CloudService(ExtendedSupport)文档更新证书(https://docs.azure.cn/zh-cn/cloud-services-extended-support/certificates-and-key-vault)时,如果遇见旧的证书(如中间证书,根证书)信息保存在KeyVaultSecret中,而更新的时候,只能从KeyVault证书中匹配到服务......
  • SpringCloud网关聚合knife4j方案
    微服务开发中想将Spring-Cloud-Gateway网关聚合knife4j,形成一个统一入口方便查阅的开发辅助接口文档,并且将Swagger抽取成一个公共模块,那么我们可以参考以下的做法约定:JavaVersion:11.0.24SpringBoot:2.7.18knife4j:4.4.0Swagger公共模块抽取依赖<dependencies><!--Sp......
  • SpringCloud Alibaba-01 入门简介
    1.SpringCloudAlibaba是由阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案。它是SpringCloud生态中的第二代实现,提供了包括服务注册与发现、分布式配置管理、服务限流降级、消息驱动能力、阿里云对象存储、分布式任务调度等在内的多种功能。1.1......