2010-07-30 36 views
4

我有以下Web场:IIS7:如何将SSL证书绑定到Https主机头?


1. http: mydomain1.com port: 80 
2. http: mydomain2.com port: 80 
3. https: port: 443 SSL Certificate: myCertificate 

在II7当您选择HTTPS绑定,主机名称将被禁用。 我使用appcmd将主机名“admin.mydomain2.com”绑定到 网站。

 

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

一个新项目被添加到绑定。

 

3. a. https: port: 443 SSL Certificate: myCertificate 
    b. https: admin.mydomain2.com port:443 SSL Certificate: None 

如果例如我想删除的第一项(a)中,是有可能的证书分配给第二结合(B)?

回答

-1

此博客帖子可能会对您有所帮助。它让我着手在IIS中定义主机头并为其分配正确的SSL证书,并且如果我们将127.0.0.1指向主机文件中的站点地址,它本地正常工作,但它在放置时超时在生产中。希望这会进一步给你一点:

http://www.awesomeideas.net/post/How-to-configure-SSL-on-IIS7-under-Windows-2008-Server-Core.aspx

删除所有绑定,指定使用命令行的SSL证书,然后通过命令行来添加与主机头的SSL绑定。

+0

该URL给我一个ASP.NET黄色屏幕死亡... – TLS 2015-02-10 21:15:58

2

作为答案的链接不是最好的办法,因为这些链接经常会变冷。以下是上述答案的摘要以及来自其他地方的支持信息。

说到SSL,主机头真的被冷落了。 SSL的目的是加密您的流量,并且部分流量是浏览器发送到服务器的HTTP头。其中一个标题就是IIS用来确定要加载哪个站点的“主机”标头。由于在发送请求头之前需要加载证书来建立安全连接,因此IIS必须仅根据IP地址和端口号选择证书,从而使主机头无效。但是,这并不免除我们必须遵守STIG v6724,因为它与IIS站点配置有关。因此,微软不会允许您输入信息,即使微软没有任何用处,但微软并不会允许您输入。但是,有一种解决方法。

请注意,此答案假定您的证书已经生成,添加到证书存储并添加到IIS。它还假定除了SSL之外,您不需要任何其他绑定到您的网站。

首先,我们需要收集一些信息。我们需要散列,应用程序ID和主机名。

  1. 打开IIS,选择您的服务器,然后双击底部的“服务器证书”。 请注意“发送至”地址。这是我们的主机名。保存这个。
  2. 选择您的网站
  3. 绑定您的网站80端口使用HTTP协议
  4. 删除所有其他语言绑定
  5. 绑定您的网站443端口使用HTTPS协议
  6. 打开命令提示符

    netsh http show sslcert 
    
  7. 保存证书哈希和应用ID

  8. 取消HTTPS网站上的
  9. 结合在命令提示符下:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>} 
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>'] 
    

注:Appcmd.exe的可以在C发现:\ WINDOWS \ SYSTEM32 \ insetsrv。您可能需要在该文件夹中才能使用此命令。

  • 删除HTTP从您的网站结合
  • 注意:您可以将HTTP绑定,如果你希望你的网站会自动重定向到https,但是这是另一个话题。

    +1

    据我所知,你的命令有一个错字: netsh http add sslcert ipport = 0.0.0.0:443 certstorename = my certhash = <将证书哈希放在这里> appid = {<在此处放置应用ID>} Eg而不是'certstoreanme',它应该是'certstorename' – 2014-12-16 09:38:15

    +0

    @АнтонКурьян修复那里的错字。 – TLS 2015-02-10 21:54:15

    相关问题