使用 appcmd 添加 ssl 绑定时出错

Posted

技术标签:

【中文标题】使用 appcmd 添加 ssl 绑定时出错【英文标题】:Error using appcmd to add ssl binding 【发布时间】:2012-03-25 21:08:10 【问题描述】:

我想使用 appcmd 将绑定添加到站点。但是当我尝试以下命令时,我得到一个错误:

appcmd set site /site.name:"My site name" /+bindings.[protocol='https',bindingInformation='*:443:sub.mydomain.com'] 

错误:

ERROR ( message:Cannot find SITE object with identifier "bindingInformation='*:443:sub.mydomain.com']". )

我检查了该站点是否存在并且确实存在。我做错了什么?

【问题讨论】:

【参考方案1】:

如果您使用的是 PowerShell,则必须将 bindings 参数用双引号括起来,以便 PowerShell 在命令发送到 appcmd 之前不会解释单引号。

./appcmd set site /site.name: contoso /+"bindings.[protocol='https',bindingInformation='*:443:']"

来源:http://technet.microsoft.com/en-us/library/cc731692(v=ws.10).aspx

【讨论】:

谢谢!试图在 PowerShell 中进行这项工作时,我感到很头疼。 :)【参考方案2】:

试试这个:

appcmd set site "My site name" /bindings:"https://sub.mydomain.com:443"

但是你的命令也是正确的。列出所有网站并确保您正在使用其中一个:

appcmd list site

【讨论】:

你从哪里得到没有/+/- 的语法?能否提供文档链接?【参考方案3】:

我在 Powershell 中遇到了绑定中冒号的问题。将它们连接起来解决了这个问题。

[string] $cmd = "$Env:windir\SysWOW64\inetsrv\APPCMD.exe"
$response = invoke-expression "$cmd add site /name:""$SiteName"" /id:$ID /+""bindings.[protocol='$Protocol',bindingInformation='$IP"+":$Port"+":']"" /physicalPath:""$Path"""

【讨论】:

【参考方案4】:

您需要以管理员身份运行命令。

【讨论】:

【参考方案5】:

我永远无法使用 *.mydomain.com 的通配符证书来完成这项工作,我认为这是一个非常友好的名称:“mydomain.com 加通配符”。我会运行上面的命令,进入 IIS 并查看绑定,它会在那里,但没有选择证书。选择证书将删除主机名并禁用它,因此我无法更改它。

我终于通过将通配符证书的友好名称更改为 IIS 预期的格式(“*.mydomain.com”)并通过 IIS 界面正常添加它来使其工作,不知道上面的 appcmd 命令是否可以工作。这个故事的寓意是给通配符证书一个标准形式的友好名称。

【讨论】:

【参考方案6】:

我创建了一个批处理文件来实现这一点:

@echo off

set /p sitename="Enter the site Name (as displayed in IIS): " %=%
set /p siteurl="Enter the site Host Header(the site url): " %=%
set /p siteip="Enter the site IP Address (ip address or *): " %=%
set /p siteprotocol="Enter the site Protocol (http, https, etc): " %=%
set /p siteport="Enter the site Port (80, 443): " %=%

appcmd set site /site.name:"%sitename%" /+bindings.[protocol='%siteprotocol%',bindingInformation='%siteip%:%siteport%:%siteurl%']

pause

【讨论】:

以上是关于使用 appcmd 添加 ssl 绑定时出错的主要内容,如果未能解决你的问题,请参考以下文章

Ninject 激活 HttpConfiguration 时出错

使用带有 SSL 证书的 PHP cURL 时出错

RxSwift:将 RX 绑定添加到 UITextField 时出错:“Binder<String?>”类型的值没有成员“debounce”

使用 Web 服务时出错::SoapClient(): SSL 操作失败,代码为 1

无聊的 SSL 握手失败和复制身份凭证时出错

尝试从 java 客户端建立 SSL 连接时出错