Kje*_*lbe 2 ssl-certificate netsh iis-10 azure-devops azure-pipelines-release-pipeline
试图根据对问题的初步反馈稍微转移焦点。
在 DevOps 发布管道中,使用管理 IIS 网站任务,尝试使用通配符证书添加 https 绑定。证书位于本地计算机的证书存储区(使用 mmc 检查 -> 添加管理单元“证书”,选择“计算机帐户”和“本地计算机”),在文件夹“Web Hosting\Certificates”中。我认为这是从 IIS 中添加时它们最终的位置。
但是当运行管道时,它失败了,日志中有这个条目:
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud)
任务发出的实际命令行是(我匿名的):
"netsh" http add sslcert hostnameport=www.mydomain.se:443 certhash=*** appid={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} certstorename=MY
Run Code Online (Sandbox Code Playgroud)
正如评论中所指出的,certstorename显然应该为参数分配一个不同的值。美好的。
但是任务属性页面没有提供此参数的设置,那么我该如何更改它呢?我应该把它改成什么?
如果无法在任务中更改它,我应该将证书移到哪里以使任务能够找到它的值certstorename=MY?我试图找到并理解有关此的文档,但失败了,可能是由于缺乏关于证书存储的基本知识和相关术语。
好的,经过几个小时的挖掘,我找到了答案,如下:
在 certmgr 中,文件夹实际上不是文件夹,而是证书存储区。一点都不迷惑。
子文件夹“Certificates”、“Certificate Revocation List”等并不是真正的子文件夹,而是将条目分类到它们的类别中的一种方式。也完全不会混淆。
显示为“个人”的证书存储在脚本上下文中表示为“MY”。不是很混乱,但这真的记录在哪里?
类似地,显示为“Web Hosting”的证书存储可能表示为“WebHosting”,在脚本上下文中没有空格。
IIS 在“WebHosting”和“MY”中查找证书,但据我所知“WebHosting”是首选。
Azure DevOps 发布管道的“管理 IIS 网站”任务被硬编码为仅在“我的”中查看。这已在此处报告为一个问题,但它已关闭,并引用了所有(?)Microsoft 编写的任务的 GitHub 存储库。我没有在那里找到相应的问题,所以我添加了一个。
实际的解决方案(解决方法)是将证书从“WebHosting”复制或移动到“MY”,即在 certmgr 中将它从“Web Hosting\Certificates”拖到“Personal”,在这种情况下,一个名为“Certificates”的“子文件夹”神奇地出现。Note that the cert is not visible when "Web Hosting" is selected, you have to select the "subfolder" called "Certificates", but you should drag to "Personal" without adding a "Certificates" subfolder there first. 真的很一致,不是吗?
一个阅读 Windows 中证书的好地方似乎在这里,实际上这在评论中比否决投票和投票结束问题更有帮助。
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |