paint-brush
探索性 Azure 的 SSL 职业资格证书:当我们的 Let's Encrypt 之路 经@socialdiscoverygroup
3,151 讀數
3,151 讀數

探索 Azure 的 SSL 证书:我们的 Let's Encrypt 之旅

Social Discovery Group10m2023/04/21
Read on Terminal Reader

太長; 讀書

为 SSL 证书苦苦挣扎? Social Discovery Group 的首席 DevOps 工程师 Pavel Shapurau 涵盖了所有内容。在文章中,他分享了一个使用 Let's Encrypt 证书的定制解决方案配置以及在此过程中吸取的经验教训。
featured image - 探索 Azure 的 SSL 证书:我们的 Let's Encrypt 之旅
Social Discovery Group HackerNoon profile picture

在部署 Web 项目时, SSL 证书的实施是每个工程师都可能面临的共同挑战——我也不例外。

往往,创业初期有限公司会开展兔费技能证件,譬如 Let's Encrypt 展示 的技能证件。并且,某些都还具有优越性性和不良后果地方,上某些开展了详细介绍代表。

让我们仔细看看我个人在使用免费证书时遇到的问题:

  • 首先,它们需要定期重新签发,并且有效期最长为三个月。
  • 对于 Kubernetes,证书需要在平台内存储并经常重新生成。
  • 通配符证书及其更新存在许多困难。
  • 加密协议和算法也有自己的特点。
在定期存款在面对这种故障 后,我开拓了个借助 Let's Encrypt 合格证书的私人订制很好解决策划方案标准配置。在这篇软文中,我将分享视频我的找到和一再走过的丰富经验惩罚。

最近,我一直专注于特定的技术堆栈,并想在 Azure 云提供商的上下文中讨论基于Kubernetes集群的基础架构解决方案。虽然 cert-manager 是该领域的流行解决方案,但我更喜欢通过 Helm 安装它以获得更大的便利。

所以,事不宜迟,让我们开始吧:

 helm repo add jetstack https: //charts.jetstack.io
helm repo update kubectl apply -f https: //github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.crds.yaml
helm install cert-manager jetstack/cert-manager -- namespace cert - manager -- create - namespace -- version v1 . 6 . 1
后来,我可选择一下 YAML 信息加入的 ClusterIssuer:
 apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-cluster-issuer
spec:
  acme:
    server: //acme-v02.api.letsencrypt.org/directory
    email: p…[email protected]   #your e-mail
    privateKeySecretRef:
      name: letsencrypt-cluster-issuer
    solvers:
      - http01:
          ingress:
            class: nginx
发展规划在未来,有这两种施实资质证书的选:
  • 通过添加“种类:证书”来创建证书;
  • 通过您的入口管理证书。
让你们试论这两种方式抉择。

在第一种情况下,我的 YAML 文件如下所示:

 apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: myservice2  namespace : test
Spec :  duration : 2160h
  renewBefore : 72h
  dnsNames : - myservice2 . mydomain . org # you resources
  secretName : myservice2 - tls
  issuerRef :    name : letsencrypt - cluster - issuer
    kind : ClusterIssuer
需要注重的是,在相关服务管理的 TLS 这部分的进口中仅写到了“secretName:myservice2-tls”。快过年了说1句,YAML 材料构成一部分有用吗的规格,举例子:
  • duration: 48h – 指示证书的持续时间(以小时为单位)
  • renewBefore: 24h – 指定证书过期前多少小时,您可以尝试更新现有证书
这样您更习俗于适用有效命令行,我就以职业资格证书的终合视图概述为您出示。
 kubectl describe certificates <cert name > -n <namespace name >

那么,我们到底有什么?

  • Not After – 证书的到期日期;
  • 不早于——证书的创建日期(除非在 Certificate YAML Resource 字段中明确指定);
  • 更新时间——证书过期前的时间戳。
就个体某种程度,发了现利用 Ingress 治理 Let's Encrypt 合格证书更有靠谱和方便简洁,这只是 我最新总是在适用它的缘由。适用这样具体方法,不仅要 TLS 部门中的 secretName 和电脑主机名模版,您只需要在平台入口 YAML 信息中拇指定批注可以了。
 annotations : cert-manager .io/cluster-issuer: "letsencrypt-cluster-issuer" cert-manager .io/renew-before: 72h
你它,这这个世界的魔力!资格证到现在会全自动重拾下发,于此实例中,资格证在变质前有四天的保护期。划得来关注的是,就 Let's Encrypt 来说 ,同意有效期限为 90 天。那么,可能 Let's Encrypt 完全免费计算机资格证的的限制,公司都公司的团对最后注重都要的除了就会保证英文公司都公司的域特别就会保证英文子域的宗合计算机资格证。伴随公司都公司以后在 Azure 上研发楼盘,公司都公司发现了 Azure Key Vault 保证了的不便的位置上来贮存此种计算机资格证。公司都公司很久在 Kubernetes 集群服务器中用 akv2k8s 实用性子程序。如若您有业余爱好,我激厉您。

什么是 Azure Key Vault

在 Azure 中拥有职业资格证后,下具体步骤就将其加入到 Azure Key Vault (AKV)。总之此具体步骤相对比较简略,但认可域物权利已经一阵一阵难搞。并且,万一成功失败进行所以要确认具体步骤,职业资格证将诞生在秘钥储放库的“保密”个部分中。本身方式的基本帮助之1是手动式创新职业技能认证证书。职业技能认证证书将在每年前在AKV中补发和创新,并手动式与Kubernetes中的Secret同步操作。


是为了让 Kubernetes 集群服务器应用收获的文凭,您必须要发放它某一些授权控制和防问授权控制。为,您先要所需获得集群技术的 identityProfile.kubeletidentity.objectId。您需要适用低于运行命令继续执行此操作的:
 az aks show -g < RG > -n < AKS_name >
教育资源组 (RG) 是文件存储集群服务器服务器的定位,AKS_name 是您的集群服务器服务器的明称。读取到identityProfile.kubeletidentity.objectId后,应该通过模仿。收起来,将值加到下令以赋予机密互访授权:
 az keyvault set-policy --name < name AKV > --object-id < get from first step value > --secret-permissions get
反驳来,您都会一直进行安装 akv2k8s,这都会在 Helm 或其它的好选择步骤完成任务,如 里面 述。通过,您是可以将 Azure Key Vault 职业技能证书与某些 Kubernetes 定名地方中的 Secret 数据同步。这是小编的 YAML 文件资料:
 apiVersion: spv.no/v1 kind: AzureKeyVaultSecret metadata: name: wildcard-cert #any name  namespace : default
spec :  vault :    name : SandboxKeyVault # name you keyvault in Azure
    object :      name : name_object_id # name object id from Azure AKV this cert
      type : secret
  output :    secret :      name : wildcard - cert # any name for secret in your namespace
      type : kubernetes . io / tls
      chainOrder : ensureserverfirst # very important values !!!
我突出了解结果某行的寓意,会因为它对满足我发现的是一个相关间题产生了得尤为重要性的效应。校园营销原始,我能够够将毕业证取得成功上传下载到 Kubernetes,但它也没有按逾期运作。确诊相关间题需用那些日子。其实单位证明,当从 Key Vault 另存 PFX 合格证时,功能器合格证然而在链的最后,而并非它理应在的结尾。当与 ingress-nginx 等叁数一同施用时,这概率会影响困难,所以合格证始终无法启动并锁定刷新页面其原始社会值。然而,在将 chainOrder 设定为 ensureserverfirst,功能器合格证将存放在链中的最位。认真仔细检杳合格证后,看到链条规格是按以内步骤排列顺序的:
  1. 中间的
  2. 服务器

在讨论了技术方面和配置之后,让我们重新深入研究 Azure 证书的特性。

Azure 展示了不同应用于订货认证证书的高级设置,这不同高级设置均由 GoDaddy 展示:
  • 特定域或子域的证书;
  • 通配符证书。
人们的首选了后面,盼望它能维护人们的所以的使用系统和售后服务。只是,有条些明显优越性。

Azure 通配符证书仅保护一级子域。例如,如果我们有一个名为mydomain.com的域,则证书将仅覆盖.mydomain.com形式的一级子域。

因此,证书将适用于service1.mydomain.com、service2.mydomain.com、service3.mydomain.com等资源,但不会涵盖service1.test.mydomain.commail.service1.mydomain.com

我们有这些抉择呢?
  • 为所有必要的子域购买单独的通配符证书;
  • 将 SAN 主题备用名称记录添加到证书中。

第一个选项不太可能实用,因为子域的数量,尤其是二级域的数量可能非常庞大。因此,为每个子域( .service1.mydomain.com、*.dev.mydomain.com… )支付通配符证书并不是最合理的解决方案。

依于2个页面,我同Azure鼓励团队合作就事必来了长事件的交往,真实经历了妥协、伤心和怨恨的全部的时段,后来才认知到资质证书的SAN程度尚未有体现。直至末尾,我都会机会 Azure 终究不容易产生那么的一些问题。比较下面,你们的角逐劲敌 AWS Amazon 经由其 AWS Certificate Manager (ACM) 供应证件,支持软件多至 10 个应急主旨称呼,例如通配符。它不能您加入 10 个拥有通配符 (*) 的子域,恐怕能够 在 AWS 上明确提出不断增加达到 100k 的进口配额。最后的,我将安利该怎样将技能证书与 Azure 上的 Front Door 服务项目通过运行。

了解 Azure 前门 (AFD)

对我来说,Azure Front Door (AFD) 是一个全球性的可扩展网关,它利用 Microsoft 的全球边缘网络将传入流量定向到适当的端点,这些端点可以是 Web 应用程序或服务。 Front Door 在 HTTP/HTTPS 层(第 7 层)运行,将客户端请求路由到池中可用的应用程序服务器。应用程序的服务器端可以是任何可通过 Internet 访问的服务,无论它托管在 Azure 内部还是外部。


来自文档网站的示例 

Azure Front Door 就是一种更方便的设备,可让你平衡性和代理权防问全.球区域式运用过程和的服务于培训的传给客流量。它作为好几个产品系列功效,具有经过配置单原则操作过程、加盟方式和耐火墙装置来激活各种各样原则的技能。在此文中,我没有会渗入研讨 AFD 的服务于培训的小事,即使省级重点分享文凭的的服务于培训性。

如你所料,到 Azure Front Door 的传入流量可以是httphttps 。如果选择https ,则有三个选项:在 Azure Front Door 服务本身生成证书、上传自己的证书或将现有证书同步到 Azure Key Vault。要允许 Front Door 服务访问 Key Vault,您需要配置必要的权限。

我最好是用到另外某个工具栏并选购一览表版本升级的证明,以减少不得不自動更新时间或立即绘制它。能够相连产自 AKV 的证明,这个世界都要 自功确保一览表壮态。

此设置将为您提供以下结果:


在将总流量从 Azure Front Door 视情况加以引导到 AKS 时,这个是另一类个的特点。

处理http流量不是问题,但在设置资源池和指定 AKS 群集的外部 IP 地址时,需要牢记一个微妙的细节。确保将“服务器组件节点标头”字段留空,以确保它自动填充在“IP 或节点名称”字段中输入的值。



猜测您有长个根据 AKV 额外添加的域通配符技能证书,它由 Front Door 服务培训性的使用并根据 akv2k8s 载入到 AKS 云计算平台中。根据 Front Door 远程访问的很多适用程序流程和服务培训性的接头机箱名(和 DNS 中的 CNAME 纪录)相应:
  • *.mydomain.com – “服务器组件节点标头”字段留空;
  • 你的外部 AKS IP 地址将具有到 / 的默认 http 重定向规则。

这将允许*.mydomain.com格式的所有服务正常运行。完成此配置后,一切就绪。



在某些情况下,通过 https 将流量从 Azure Front Door 重定向到 AKS 可能更有利。为确保 Azure Front Door 在服务器池设置中正常运行,指定与您的 AKS 集群对应的 DNS 名称至关重要,这与 SNI 和健康检查有关。否则,设置将无法运行。

在我的例子中,没有为我的 AKS 集群分配名称,我只有以前直接工作但必须通过 Azure Front Door 运行的服务。为了解决这个问题,我必须为 AKS 集群创建一个单独的 DNS 名称,配置 DNS,并设置一个单独的服务,并将证书附加到入口。只有这样,我才能将https流量重定向到 AKS 集群,并确保它对所有可用服务都能正常工作。

在为 AKS 设有相连限权时充分考虑安会方法很沉要。为确认安会相连,您能能限制仅从 AKS 电脑网络安会组中的 Azure Front Door IP IP地址相连到 AKS 的限权(有以下几点图如图所示)。



除此以外,您就能够用将 AKS 流量设定为按 ID 也可以进行出自 Azure Front Door 标头的无线连接。

最后的说明和一条建议

1. Azure 不供给有关的其证明的作用和优点缺点的切实个人信息。并且,指的一提的是,顾客适时退回了我们公司入手的证明。 2. 在小编公司的开发管理整个过程中,小编公司再继续施用 Let's Encrypt。虽然它有其滞后性性,但它并没有最糟心的选定 。 3. 要是您的产品需求若干不同的信息类别的子域,您或许需求综合考虑3方制造商的“Wildcard (also known as Multidomain) with SAN”资格证。此类资格证还可以添加到 Azure 中并多方面发挥作用其有潜力。 4. 比如硬件配置正確,Azure Front Door 一项很棒的功能。我很强烈推建它。
由 Social Discovery Group 首席 DevOps 工程师 Pavel Shapurau 撰写
바카라사이트 바카라사이트 온라인바카라