DevOps, Manage IIS Website task, netsh add sslcert, fails with error 1312 [closed] (关闭)

问题描述 投票:-1回答:1

根据问题的初步反馈,试图转移一下焦点。

在DevOps发布管道中,使用管理IIS网站任务,尝试使用通配符证书添加https绑定。证书在本地计算机的证书存储中(用mmc -&gt检查;添加快照 "证书",选择 "计算机账户 "和 "本地计算机"),在 "Web Hosting\Certificates "文件夹中。我想这是在IIS中添加证书时的最终位置。

但是当运行管道时,却失败了,日志中有这样的记录。

SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.

任务实际发出的命令行是(我匿名的):

"netsh" http add sslcert hostnameport=www.mydomain.se:443 certhash=*** appid={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} certstorename=MY

正如评论中所说 certstorename param显然应该被分配一个不同的值。好吧,但任务属性页面没有提供这个参数的设置。

但是任务属性页面没有提供这个参数的设置,那么我如何改变它?我应该把它改成什么呢?

如果不能在任务中更改,那么我应该把证书移到哪里,让任务能找到它的值。certstorename=MY? 我曾试图找到并理解关于这个问题的文档,但失败了,可能是由于缺乏关于一般证书存储和相关术语的基本知识。

azure-devops ssl-certificate azure-pipelines-release-pipeline iis-10 netsh
1个回答
0
投票

好了,又经过几个小时的挖掘,我找到了答案,如下。

  1. 在certmgr中,文件夹其实不是文件夹,而是证书库 一点都不混乱。

  2. 子文件夹 "证书"、"证书撤销列表 "等,其实并不是子文件夹,而是将条目分类的一种方式。也完全不会混淆。

  3. 显示为 "个人 "的证书存储在脚本上下文中表示为 "MY"。其实并不令人困惑,但哪里有真正的文档记载呢?

  4. 同样,显示为 "Web Hosting "的证书存储在脚本上下文中可能被表示为 "WebHosting",没有空格。

  5. IIS同时在 "WebHosting "和 "MY "中查找证书,但据我了解,"WebHosting "是首选。

  6. Azure DevOps 发布管道的 "管理 IIS 网站 "任务被硬编码为只在 "MY "中查找。这已被报告为一个问题 此处但它被关闭了,并引用了所有(?)微软授权任务的GitHub repo。我在那里没有找到相应的问题,所以 我加了一个.

  7. 实际的解决方法是将证书从 "WebHosting "复制或移动到 "MY",即在certmgr中把证书从 "Web Hosting/Certificates "拖到 "Personal",这样的话,一个名为 "Certificates "的子文件夹就会神奇地出现。需要注意的是,选择 "Web Hosting "时,cert是看不到的,必须选择名为 "Certificate "的 "子文件夹",但你应该先拖到 "Personal",而不在那里添加一个 "Certificate "子文件夹。真的非常一致,不是吗?

在Windows中阅读有关证书的好地方似乎就是 此处实际上,这比下票和投票结束问题更有助于评论。

© www.soinside.com 2019 - 2024. All rights reserved.