Azure-docs: “Invoke-WebRequest:无法检索证书,因为指纹无效。验证指纹并重试”

创建于 2018-12-18  ·  61评论  ·  资料来源: MicrosoftDocs/azure-docs

您好,我有一个关于在您的示例中使用 Invoke-WebRequest power shell 命令的问题。

首先让我给你一些关于我当前设置的背景信息。 现在,我有一个使用来自 CA 的 X.509 证书的 Service Fabric 集群,用于保护集群。 我拥有管理员权限,此外,我在我的(个人)商店中的本地计算机上拥有证书。 我在第一次创建集群时设置了 AAD,它允许我使用 Service Fabric Explorer 并从 Visual Studio 2017 发布/更新代码。这一切正常,但我遇到的问题是当我尝试在您的示例并指定 -CertificateThumbprint。 我使用的指纹与我用来设置从 CA 获得的集群相同。 但是,我总是收到以下错误

“Invoke-WebRequest:无法检索证书,因为指纹无效。验证指纹并重试”

为什么我不能使用用于将代码从 Visual Studio 发布到我的服务结构集群和服务结构资源管理器的相同 X.509 指纹和证书? 根据 Microsoft 文档,“默认情况下,集群证书具有管理员客户端权限。” 很困惑为什么这不起作用。

谢谢


文件详情

请勿编辑此部分。

assigned-to-author doc-bug service-fabrisvc triaged

所有61条评论

感谢提问! 我们正在调查,并会尽快为您更新。

@starforce我在我的环境中尝试过。 得到了同样的错误。
@MicahMcKittrick-MSFT 请调查这个问题。

感谢您确认您收到相同的错误 @jakaruna-MSFT

@hrushib你能看看文档并帮助我们弄清楚为什么它不起作用吗?

抄送@aljo-microsoft

@starforce ,您能否附上您的集群清单和使用的 PS 命令/脚本。

@starforce @hrushib @MicahMcKittrick-MSFT

相互认证。


可以为管理员或用户客户端操作指定任意数量的附加证书。 当需要相互认证时,客户端可以使用该证书。

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security

@MicahMcKittrick-MSFT

请关闭这个。

@hrushib @MicahMcKittrick-MSFT @aljo-microsoft

似乎如果我无权执行 Powershell 脚本,我就不应该收到指纹错误。 我可以使用 Connect-ServiceFabricCluster 连接到我的集群,但无权使用 Invoke-WebRequest 命令? 好像不太对

我是 AZURE 门户的所有者,并将自己设置为服务结构集群的管理员。 我拥有在我的门户中执行任何操作的所有安全权限和特权。 我可以将代码上传到 Service Fabric 集群,并且能够使用 Service Fabric Explorer 来管理集群,这表明我具有管理员权限。 当我连接到服务结构集群时,我使用与 Azure 门户所有者关联的电子邮件帐户。 所以问题是为什么这不起作用。 我们将在三周内上线,但我仍然没有为集群上运行的 .NET 2.0 核心状态服务提供备份解决方案。 您所做的只是剪切和粘贴我已经阅读过的文档,但是您没有回答我为什么这不起作用的问题。
这个问题已经由微软重新创建,我正在寻找答案

先感谢您

@hrushib

你还想要我的集群清单和脚本吗?

@starforce
请查阅:
如果您在上线后需要支持; 请打开支持票: https : https :

@hrushib
请关闭这个。

@starforce ,是的,我想查看集群清单和您正在使用的命令。 请分享您的集群清单和命令,以便进行有意义的讨论。

@aljo-Microsoft,目前,备份还原 API 没有明确的 PS cmdlet,这些仅作为 REST API 提供。 所以你上面分享的链接在这种情况下没有用。

@hrushib
用户表示他的问题是使用“-certificateThumbprint”参数对 SF Runtime API 使用“Invoke-WebRequest”。

使用该命令和参数,昨天针对可公开访问的聚会集群运行时 API,我可以成功。

该用户还表示,他在将应用程序从 VS for Dev\Test 发布到他的集群中没有任何实际问题; @starforce没有什么会阻止您声明与服务器证书和客户端身份证书相同的证书; 虽然不推荐用于生产。 建议使用 AAD 在 FabricClient 和 FabricGateway 相互身份验证期间提供客户端 ID。

参考:
https://docs.microsoft.com/azure/service-fabric/service-fabric-production-readiness-checklist
https://docs.microsoft.com/azure/security/azure-service-fabric-security-best-practices
https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-creation-setup-aad
https://docs.microsoft.com/azure/service-fabric/service-fabric-windows-cluster-x509-security

所以@starforce@hrushib我是不是遗漏了什么,还有哪些问题没有得到解决?

@hrushib是否有我可以将清单和 PowerShell 脚本发送给您的电子邮件地址? 我不想发布我的生产清单给大家看。

@starforce

我的电子邮件是[email protected]

@jakaruna-MSFT
我刚刚配置了一个集群,使用 CA 颁发的证书,并且没有声明客户端身份

我从 VS 向我的集群发布了一个应用程序,没有问题。

我使用 PowerShell SF 模块从我的集群中删除了该应用程序,没有出现问题。

我使用以下命令调用了我的集群 SF API 来获得集群运行状况,而不会出现问题:

Invoke-WebRequest -Uri " https://sfbpcluster.westus.cloudapp.azure.com :19080/`$/GetClusterHealth?api-version=6.0" -CertificateThumbprint "MY THUMBPRINT"

刚刚发送脚本和清单

@starforce @hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT

我通过从“我的”商店中删除我的客户证书来重现该错误。

例如

Get-ChildItem Cert:\CurrentUser\My\${THUMBPRINT} | 除去项目

运行以下命令来解决您的问题:
Import-PfxCertificate -FilePath .\${YOUR CERT NAME}.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString ${YOUR CERT PASSWORD} -AsPlainText -Force)

请关闭这个。

作为完整性检查,由于您可能是复制粘贴指纹,您能否仅在十六进制编辑器中验证命令文本以确保指纹中没有隐藏字符? 我们已经看到其他人在过去处理复制粘贴的证书时使用字节顺序标记隐藏字符。 Microsoft 证书 UI 包含这些字符,因此携带它们然后您复制指纹。

我将尝试此解决方案并确保使用十六进制编辑器。 我会在早上回去工作时解决这个问题。 我希望这有效。 我实际上进入 Azure 和我的 Cert Vault 并转到 Cert 并使用复制功能获取 Tumbprint 信息。

字符串编码是一个非常常见的问题:

https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

我们建议在进行软件源编辑时使用 Visual Studio Code: https :

@starforce
如果将以下内容添加到我们的文档中是否会有所帮助,请告诉我们:

(Get-Childitem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -eq "cn=westus.cloudapp.azure.com"})[0].Thumbprint

例如
$url = "https://\com:19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"

Invoke-WebRequest -Uri " https://sfbpcluster.westus.cloudapp.azure.com :19080/$/GetClusterHealth?api-version=6.4" -CertificateThumbprint (Get-Childitem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -eq "cn=\

看起来我走得更远,但现在越来越

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint 'XXXXXXX806E89C73A32FA4E97DD62B6AF'
(我这里改了指纹,不让大家看到)

Invoke-WebRequest:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系

我也试过了。 并得到同样的错误。

Invoke-WebRequest -Uri " https://zixtysservices.eastus2.cloudapp.azure.com :19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"
-CertificateThumbprint (Get-Childitem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -eq "cn=zixtysservices.com"})[0].Thumbprint -ContentType 'application/json' -Method Get

@starforce
该调用不正确,您是否使用 Post 或 Get 像上面发布的一样?

@aljo-微软

是的,我确实运行了脚本,并且似乎可以正常工作,请参见下文。
1)运行这个scipt

Import-PfxCertificate -FilePath zixtysvault-WWWZixtysServicesWWWDZixtysServices-20181228.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString $ -AsPlainText -Force)

2)并得到以下结果
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

指纹主题
---------- -------
XXXXXXX3B77DD806E89C73A32FA4E97DD62B6AF CN=zixtysservices.com, OU=域控制验证

3)然后跑

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint 'XXXXXXX806E89C73A32FA4E97DD62B6AF'
(我这里改了指纹,不让大家看到)

Invoke-WebRequest:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系

@starforce
您的主题备用名称证书属性需要与您的域匹配:

您的自定义域:
CN=zixtysservices.com

将它添加到您的证书属性 SANS,并确保您的 DNS 别名解析为您的集群的管理 API IP 地址。

@aljo-微软

根据 Microsoft 自己的文档,您无法从 CA 获得证书

zixtysservices.eastus2.cloudapp.azure.com。 只是不允许。 我无法直接访问 Microsoft 服务器以提供 CA 验证我拥有该域名所需的某些信息。

您需要做的是为您自己的自定义域 (zixtysservices.com ) 获取证书并将您的自定义域设置为路由到服务结构 url (zixtysservices.eastus2.cloudapp.azure.com )。 所以当我去https://www.
zixtysservices.com 匹配我的 CA 给我的证书的 CN,它将它路由到服务结构 URL。 这一切都很好,现在在生产中运行良好。

有一个关于如何设置的完整文档

@aljo-微软

这是一篇关于如何为您的 Service Fabric 集群添加 CA 颁发的自定义域名证书的文章。

https://ronaldwildenberg.com/custom-domain-name-and-certificate-for-your-azure-service-fabric-cluster/

@aljo-微软

我找到了 Microsoft 文档,它指出 .

证书的主题名称必须与您使用的域匹配。 您无法从 *.cloudapp.azure.com 域的证书颁发机构 (CA) 获取 SSL 证书。 您必须为集群获取自定义域名。 当您从 CA 请求证书时,证书的主题名称必须与您用于集群的自定义域名相匹配。

@starforce

是的。 你的 SANS 不能 == *.cloudapp.azure.com

因为这不是唯一的,并且您不拥有“cloudapp.azure.com”。

将 DNS 别名映射到集群的管理 API IP 地址:

https://docs.microsoft.com/azure/dns/tutorial-alias-pip

@aljo-microsoft 以及我将如何证明
到我拥有该域的 CA?

现在可以使用自签名证书来做到这一点,但不是来自 CA

您使用的是自签名证书还是来自 CA 的一个问题?

我已经使用自签名和 CA 每天颁发证书来完成此操作:

https://github.com/aljo-microsoft/demo/blob/master/deploy/servicefabric_bestpractices.py

对于自签名:

default_policy_process = Popen(["az", "keyvault", "certificate", "get-default-policy"], stdout=PIPE, stderr=PIPE)

            stdout, stderr = default_policy_process.communicate()

            if default_policy_process.wait() == 0:
                default_policy_json = json.loads(stdout.decode("utf-8"))
            else:
                sys.exit(stderr)

            # Set Subject Name to FQDN
            # Browsers won't trust certificates with subject names that don't match FQDN
            default_policy_json['x509CertificateProperties']['subject'] = "CN=" + self.dns_name
            default_policy_json['x509CertificateProperties']['sans'] = {'dns_names': [self.dns_name], 'emails': [self.user_email], 'upns': [self.user_email]} 
            policy_file_name = "policy.json"
            policy_file_arg = "@" + policy_file_name
            json.dump(default_policy_json, open(policy_file_name, 'w+'))

            certificate_create_process = Popen(["az", "keyvault", "certificate", "create", "--vault-name", self.keyvault_name, "-n", self.certificate_name, "-p", policy_file_arg], stdout=PIPE, stderr=PIPE)

            if certificate_create_process.wait() != 0:
                sys.exit()

对于颁发的 CA,我通过我的 CA 门户请求我的完全合格域,然后我通过 Azure 门户并添加了额外的 SANS。

注意:自签名证书不能通过通用名称声明,它们的 x509 属性也不能安全发现续订指纹; 所以所有旋转它们的操作都需要人工操作或自定义的非支持解决方案。 建议使用 Keyvault 集成证书颁发机构颁发的证书来保证群集安全,建议使用 Azure Active Directory 用于客户端身份。

请向我发送有关如何将 Microsoft 服务结构 URL 与 CA 颁发的证书相关联并使其成为 CN 或 san 的一部分的文档

@starforce

在用于 Keyvault 证书的 Portal Blade 上:

https: //ms.portal.azure.com/#@microsoft.onmicrosoft.com/resource/subscriptions/\

单击创建证书。

在此刀片上添加您拥有的 DNS 名称; EG 您在 CA 上注册并解析为您的服务的那些。

@aljo-微软

让我试试这个,我会回复你的。

谢谢你的帮助

@starforce

如果您没有向 CA 注册您的 DNS 名称,您将收到如下错误:

原始错误信息
您无权请求自动批准站点 aljotestcert.westus.cloudapp.azure.com,aljotestdns.westus.cloudapp.azure.com 与 A​​zure Id \

在这种情况下,我尝试提供一个通用名称证书 == aljotestcert.westus.cloudapp.azure.com,并使用我的订阅提供了一个 DNS 名称 == aljotestdns.westus.cloudapp.azure.com; 失败了,因为我还没有拥有这些域。

@aljo-微软

让我试着看看这个。 似乎首先我需要使用您刚刚给我的说明在 Azure 门户中注册我的服务结构 URL,然后转到我的 CA 并将服务结构 URL 添加为 SAN

Azure Keyvault 是推荐用于 Service Fabric 群集证书的 Secrets Management 解决方案,Service Fabric 没有规定如何获取证书或将证书部署到规模集; 我们建议使用 ARM VMSS 资源属性进行可靠部署,并使用集成 CA DitiCert 或 GlobalSign。

DigiCert 和 Global Sign 是可以为您颁发证书的集成 CA;我遵循他们的文档来了解如何完成他们的验证过程。

类似问题:
https://github.com/Azure/service-fabric-issues/issues/1209
https://github.com/Microsoft/service-fabric/issues/163
https://feedback.azure.com/forums/170024-additional-services/suggestions/16957756-add-integration-with-let-s-encrypt

@starforce @hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT
请关闭此用户发布的问题已解决。

你好,我真的需要为我的 .NET CORE 2.0 Stateful 应用程序进行备份,到目前为止我在这里收到的建议不起作用

下面开始问题:

您好,我刚刚尝试通过 DigiCert 注册我的 Service Fabric 集群域名,但没有成功,

我只是尝试为我的 Service Fabric 集群 (http://zixtysservices.eastus2.cloudapp.azure.com/) 保护 CERT,但据 DigiCert 称,他是 Microsoft 的集成合作伙伴,在收购 SSL 时。 您不能在任何 Microsoft 域名上请求证书。 见下文。

“不幸的是,出于法律原因,我们不允许向使用微软任何商标的任何域名颁发任何证书。 您可以查看 Microsoft 自己发布的一般商标指南。https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general.aspx在广告资料、营销和产品包装的附加指南,然后是网站部分,它写道:“请勿在您的网站标题或二级域名中使用任何 Microsoft 商标。未经 Microsoft 许可或书面规范,您不得使用任何 Microsoft 徽标。”很抱歉给您带来不便。

因此,由于您无法获得 Microsoft 域上的证书,因此您针对我的 WebInvoke 问题的解决方案将不起作用“
**导入-PfxCertificate -FilePath 。.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -AsPlainText -Force) 无法工作,因为我无法获得 CERT 来拥有我的 CN=zixtysservices.eastus2.cloudapp.azure.com

正如我之前所说的,CA 可以通过几种方式验证 DOMAIN 的所有权;
TXT记录,
将 HTML 文件放置在服务器上的某个位置,
或向域所有者做 W​​hois 并向 ADMIN 发送电子邮件

SO 谁可以帮助我使备份正常工作,因为您无法在 CN .azure.com 中获得 CERT。

@starforce和 @MicahMcKittrick-MSFT
首先感谢您的耐心和坚持,以确保我们提供准确的信息。

您是对的,只有像我这样的 MSFTE 才能为任何 MS Azure 记录配置 DNS 名称。

因此,您需要为您的域创建一个 DNS 别名,具体方式取决于您的架构:

如果您的管理端点 API 由您的负载均衡器的公共 IP 公开:
https://docs.microsoft.com/azure/dns/tutorial-alias-pip

如果您的管理端点 API 由流量管理器公开:
https://docs.microsoft.com/azure/dns/tutorial-alias-tm

将您的 DNS 别名映射到您的集群管理 IP,您可以声明您的管理端点集群属性以使用您的 DNS 别名 FQDN。

例如

 "managementEndpoint": "[concat('<YOUR DNS FQDN ALIAS>',':',variables('nt0fabricHttpGatewayPort'))]",

如果这能解决您的问题,请告诉我。

@aljo-微软
我会看看这个。 我们正在使用负载平衡将流量定向到集群。在我们找到解决方案之前,请不要关闭此问题。 让这个工作非常重要。 我将在明天开始工作并提供反馈..

@aljo-microsoft @MicahMcKittrick-MSFT

我不知道下面这意味着什么。 请举例说明。 这是 ARM 脚本吗,Powershell? 设置 Alias 后,我将在哪里进行此更改。 你确定这会奏效吗?

将您的 DNS 别名映射到您的集群管理 IP,您可以声明您的管理端点集群属性以使用您的 DNS 别名 FQDN。

例如

"managementEndpoint": "[concat('',':',variables('nt0fabricHttpGatewayPort'))]",

@starforce

以下: https :

我今天从 GoDaddy 购买了一个新域,并将我的名称服务器更新为在 Azure 中创建的新 DNS 区域; 因为这是我计划托管我的域的地方。

目前 GoDaddy 的状态是:

更新您的域名服务器后,其他网络需要 4 到 8 个小时才能访问 .com 和 .net 域名的信息

参考:
https://www.godaddy.com/help/set-custom-nameservers-for-domains-registered-with-godaddy-12317

转到 Keyvault 证书的门户刀片,我生成了一个证书请求,通过将 DigiCert 配置为我的提供者,并在我的请求中使用我的域名作为通用名称和 dns 名称; 记录在这里:
https://www.digicert.com/azure-key-vault/connect-to-certcentral-quick-start-guide.htm

注意:Azure Portal Blade 中的密码字段用于 API 密钥,而不是 DigiCert CertCentral 帐户。

在这种情况下,提供商不仅验证了我的 GoDaddy 注册域的详细信息(地址、姓名、电话号码),而且还要求我提供其他详细信息(政府 ID、工作流程审批流程、与我联系的电话、电子邮件链接我必须单击,然后表示他们需要更多时间由第二个人进行二次合规性检查验证,然后才能批准我已经批准的 CSR)。 如果事情按预期完成,当我醒来时,我应该有一个由第三方颁发的自定义域证书; 没有配置集群或网络服务器(通过我从 3rd 方域注册商处购买和拥有域记录以及 KV 的集成 CA 的验证过程启用)

接下来,我将使用之前提供的链接将我的自定义域映射到流量管理器,该流量管理器将位于我的主节点类型负载均衡器之前,并解析为我的管理 API IP 地址(其中来自我的集群的 SF 系统服务将服务于 SF 客户端 API https ://docs.microsoft.com/rest/api/servicefabric/sfclient-index); 明天会更新结果。

也是的 managementEndpoint 是 ARM 模板集群资源的属性; 这里的例子:
https://github.com/Azure-Samples/service-fabric-cluster-templates/blob/master/7-VM-Windows-3-NodeTypes-Secure-NSG/AzureDeploy.json

@aljo-微软

在我开始之前要等待你的结果。

@starforce
证书是使用先前提供的说明在 Digicert 的 KV 中为我的自定义域提供的。 很快开始 DNS 配置,今天将配置一个集群。

笔记:

复制每个名称服务器地址时,请确保复制地址末尾的尾随句点。 尾随句点表示完全限定域名的结束。 如果 NS 名称末尾没有句点,则某些注册商会附加句点。 要符合 DNS RFC,请包括尾随句点。

参考
https://docs.microsoft.com/azure/dns/dns-delegate-domain-azure-dns

GoDaddy 会附加尾随句点,因此包括您的 4 个命名服务器中任何一个的最后一个句点,都会导致 GoDaddy 错误; 只需在更新这些名称时删除最后一个句点。

@starforce

通过为自定义域配置证书,我使用以下标准集群资源配置了 TrafficManager:

https://github.com/aljo-microsoft/demo/blob/master/deploy/Deploy-2NodeTypes-3ScaleSets.endpoint.json

并被执行

az group deployment create -g sfbpdeployrg --name sfbptrafficmanager --template-file AzureDeploy.json --parameters @AzureDeploy.parameters.json

然后按照这个文档,我为我提供的流量管理器配置了我的 DNS 区域别名记录:

https://docs.microsoft.com/azure/dns/tutorial-alias-tm#create -an-alias-record

@starforce @hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT

我现在提供了有关如何配置 SF(管理端点)以支持您的自定义域的所有步骤; 此属性更新门户 SFX URL。

我还提供了有关如何从第三方获取自定义域证书的指南,方法是使用整数 CA 获取自定义域的证书,该证书支持不需要您先配置集群的验证过程。

这将允许您使用通用名称和 3rd 方自定义域证书来配置集群。

也就是说,请关闭它。

注意:使用 managementendpoint 属性只会更改门户。 如果您没有成功为集群前端的 LB 或 TM 创建别名,则该名称将不会解析为您的集群以进行 SFX 或客户端连接; 他们需要直接使用 TM 或 LB 公共 IP 进行连接。 其影响是您的浏览器仍然会抱怨您的证书中列出的自定义域与 URL 不匹配。 我通过正确配置我的,在我的 DNS 区域资源中使用“A”和“C”记录属性来解决这个问题。

@starforce @hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT

我会尝试这个并回复给大家。 为什么在我确认它对我有用之前急于关闭这个问题?

感谢@aljo-microsoft 的所有辛勤工作和解释。

@starforce在这一点上,我们已经在这个问题的范围内尽可能多地解决了问题。 我们使用这些问题来识别文档问题,当然我们会尽可能提供更多帮助。

请让我们知道您的结果。 如果您需要进一步的帮助,我们需要您开一张技术支持票,与工程师一起进一步调试。 当然,如果您在其他文档上发现任何文档问题,请随时告诉我们。

@MicahMcKittrick-MSFT .. 谢谢。 希望它会起作用。 我是否需要购买技术支持计划才能提出技术支持问题?

@starforce如果涉及到我可以为您提供免费请求,所以不用担心:) 让我知道结果,我们可以从那里开始。

@starforce和 @MicahMcKittrick-MSFT
我还解决了使用自定义域连接到我的机器的问题。

通过为我的“A”和“C”记录配置我的 DNS 区域“别名记录集”; 将“A”记录设置为 TM 前端的所有 IP 地址后端,并使用“C”记录将其设置为 TM DNS 名称。

@aljo-microsoft 谢谢你所做的一切!!

到目前为止,一切都很好。 设置 Azure DNS 区域,

然后更改 Google 域以使用 Azure 名称服务器。 做了 Ns-lookup,一切正常。
我已经拥有 DigiCert Azure 帐户,所以我已经完成了..

DigiCert 将允许我申请 30 天的测试证书,这很好,因为在我确定它会起作用之前不想花费 198 美元。 将在 DigiCert 向我发送信息后更新

我刚拿到我的 DigiCert。 周一继续。。

@aljo-微软

我计划通过 portal.zure.com 创建我的测试服务结构集群和流量管理器,而不是尝试修改这个很长的脚本。

https://github.com/aljo-microsoft/demo/blob/master/deploy/Deploy-2NodeTypes-3ScaleSets.endpoint.json

@hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT

你好@aljo-microsoft

您是说如果我运行您在此处提供的用于创建服务结构集群的脚本

https://github.com/aljo-microsoft/demo/blob/master/deploy/Deploy-2NodeTypes-3ScaleSets.endpoint.json

我没有通过 Azure 门户创建我的集群,而是在我的证书中将集群名称设置为我的 CN,而是获得了 DigiCert? 因为当我从门户执行此操作时,没有 Microsoft 域名就无法绕过创建集群。 见下文。 我只想在手动创建集群之前确保我可以。 因为根据您的说法“这将允许您使用通用名称和 3rd 方自定义域来配置集群”见下文。

image

@hrushib @jakaruna-MSFT @MicahMcKittrick-MSFT
@aljo-微软

嘿感谢所有的帮助,但没有任何建议可以解决我的问题。 回到我原来的问题:

nvoke-WebRequest :无法检索证书,因为指纹无效。
根据 Microsoft 文档,“默认情况下,集群证书具有管理员客户端权限。”

这真的应该有效。 它目前适用于将代码部署到 Visual Studio 内的 Service Fabric,并且在存在自定义域时与 Service Fabric Explorer 一起使用。 需要从 Microsoft 工程师那里获得一些帮助,但我在这方面花了很多时间,我必须继续前进。 此外,这些文档需要反映一些使用 powershell 脚本来执行他们的工作,而其他人只使用 portal.azure.com 或 resources.azure.com,因为它更容易和更安全。 这里的许多示例都假设使用了 powershell 脚本。 在拥有 SCM 部门的大型组织中,这可能是真的,但对于较小的公司,我们没有全职 SCM 的奢侈。 现在我知道备份没有 UI 但是,从我的角度来看,虽然毫无疑问我可以使用和运行 PowerShell 脚本,但这不是最好的方法,因为它比使用 UI 更容易出错.

@starforce
Portal 不适合您的用例,您应该使用 ARM 模板; 您可以从修改我提供的模板开始,或者如果您需要帮助使用 Rest API 文档或我提供的内容创作特定于用例的 JSON 文件,您可以购买 Premier Engineering 支持。

resources.azure.com 和门户对于生产 Service Fabric 环境并不安全或不推荐; 使用它们中的任何一个都无法获得 ARM 的全部优势,并且无法始终通过它们中的任何一个来利用最新的 Azure 资源功能。

因此,这不是最初的问题,因为我已经记录和填写的您最初的问题确定的唯一 SF 特定问题是如何更新自定义域门户中 Service Fabric Clusters 的管理 URL(建议您使用 ARM 模板)。

Azure 提供有关如何在 Azure 中托管自定义域的教程:
https://docs.microsoft.com/azure/dns/dns-delegate-domain-azure-dns

在 Azure 中托管您的域不是 SF 资源的一项功能,因为您可以在许多资源上运行您的 Azure 托管服务; SF、应用服务、AKS 等。

我不仅提供了第 3 方证书,还使用 ​​Digit cert 中的证书完成了在 Azure 中托管我的服务的端到端配置; 他们发给我的,不需要我先提供任何 Azure 资源来托管一些字符串,我使用该证书的集群今天仍在运行,并将我的自定义域解析到我的环境。

鉴于您遇到的困难,我的建议是购买适当的支持,以提供所需的在 Azure 中托管域的速度。

感谢您的所有帮助,我知道如何使用 DNS 托管和所有这些技术,因为我在 Google 域中获得了相同的技术。 另外,我知道如何修改 arm 模板。 但问题是没有文档说明在使用 arm 模板创建服务结构集群时可以绕过使用 Microsoft 域。 并且脚本有超过1600行,这对人类来说很容易出错。 我认为更好的解决方案是我在晚上调用我的内部 api,然后以 Json 格式检索数据并自己保存,直到该功能变得更加强大和用户友好。 如果您无法使用门户在生产中创建服务结构探索集群,则需要在如何文档中明确说明。 如果您在 Google 上搜索其他人的示例,他们总是使用门户来创建服务结构集群,即使是自定义域也是如此。 我的生产网站在过去 6 个月内一直在运行,我没有使用一个 arm 模板来创建它,而且我有 SSL 工作。

@starforce

我已经发布了公共文档,明确指出您应该使用 ARM 来提供生产解决方案:


在生产方案中,使用资源管理器模板创建 Azure Service Fabric 群集。 资源管理器模板可以更好地控制资源属性并确保您拥有一致的资源模型。

https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-infrastructure-as-code

很高兴您的问题得到解决,强烈建议您查看我们所有的最佳实践文档以避免将来出现问题:

https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-overview

是的,您还说过我可以获得 Microsoft 域的证书,但我告诉过您不能。 谢谢你,祝你好运

只有像我这样获得授权的 MSFT 才能为 Microsoft 拥有的域申请证书。

是的,但在你给我那个对我不起作用的解决方案之前,你应该知道这一点。 我花了整整两天时间来研究您提供给我的解决方案。 现在你让我修改一个1600 Plus 的行脚本,然后又浪费了两天的时间来研究可能有用的东西。 显然,Microsoft 并不了解让事情运行所需的所有工作和努力。 任何时候我都可以使用前端 UI 来简化我的生活。

@MicahMcKittrick-MSFT 这正常吗?

@starforce

请查看以下最佳实践文档:
https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-overview
https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-security
https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-networking
https://docs.microsoft.com/azure/service-fabric/service-fabric-production-readiness-checklist

此外,鉴于我对您面临的问题的了解,除了支持票和上述文档建议之外,我还建议您查看 Keyvault 和网络资源文档。

与往常一样,请打开支持票以加快解决您的生产 Service Fabric 解决方案。

我理解的场景是:
用户开发环境 PowerShell 会话中的Service Fabric 客户端 API可访问性,将其生产 3rd 方证书公用名传递到 Invoke-WebRequest PS 函数。

问题种类:
安全和网络

问题描述:
已启用 SSL 的用户部署 Azure Service Fabric 群集管理 API 的第 3 方域命名解析。

当前状态:
无法重现用户问题。

01/29/2019 和之前的日期执行了以下验证:Key Vault Integrated Digit Cert CA 颁发的证书,用于 3rd 方注册 (GoDaddy) 域,用于成功执行对安全 Azure Service Fabric 群集的 Invoke-WebRequest。

验证 Azure Service Fabric 群集保护群集的最佳做法是在 Azure 资源管理器模板中声明证书颁发机构颁发的证书属性公用名称和颁发者指纹。

参考:
https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-infrastructure-as-code
https://docs.microsoft.com/azure/service-fabric/service-fabric-best-practices-security

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

behnam89 picture behnam89  ·  3评论

jebeld17 picture jebeld17  ·  3评论

JeffLoo-ong picture JeffLoo-ong  ·  3评论

bityob picture bityob  ·  3评论

Ponant picture Ponant  ·  3评论