2011-12-13 39 views
2

内的自签名证书从我的理解它实际上可能创造发给一个IP地址的证书。在IIS Express中可以这样做吗?创建IIS快递

请注意,这仅用于测试。

编辑

人们似乎缺少真正的肉和我的问题的土豆,所以我已经删除了额外的细节。

回答

5

谢谢@布鲁诺所有的建议!使用单独的工具创建SSL证书使我朝着正确的方向前进。

首先,我尝试了IIS 6 selfssl命令行工具,它可能在第一步工作中起作用(但我没有在找到我当前的解决方案后对其进行测试)。第一步是创建证书,第二步是将该证书绑定到我的IP /端口。

  1. 我用makecert从Visual Studio命令提示符创建我的证书(这是我认为从IIS 6 Resource Kit中的IIS 6 selfssl工具应该工作以及)。创建证书后,我使用mmc管理单元控制台并添加证书管理单元,在个人/证书下找到它。

    makecert -r -pe -n "CN=0.0.0.0" -b 01/01/2011 -e 01/01/2025 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

  2. 要将证书绑定到我的IP /端口我用netshipport应改为您的IP /端口。 appid是一个GUID,我不认为这个问题很重要。 certhash您可以从证书本身的Thumbnail字段获得,但您必须删除散列中的空格。

    netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint

0

据我理解这个问题,除非你的证书是由实际信誉证书颁发机构颁发,你会不断收到错误。

(通过“可信的证书颁发机构”我的意思是:“你买的起的地方证书”)

http://www.gerv.net/security/self-signed-certs/ < - 对那件事有趣的阅读。

+1

我认为你可能指的是其中证书不被信任的问题。但我相信我的问题是不同的。当服务被访问时,我没有收到错误localhost(这是谁默认的iis快速证书是),但我通过IP地址访问服务时得到它。你知道如何创建一个在IIS express中发布到IP地址的自签名证书吗?或者如果可以在IIS Express中使用? – Craig 2011-12-13 19:54:08

+1

我不是IIS Express的专家,但是这个问题和答案可能会让你感兴趣http://stackoverflow.com/questions/5521305/iis-express-getting-ssl-to-work – 2011-12-13 20:03:05

+1

“The security本网站提供的证书是针对不同的网站地址发布的“与CA无关。这是关于主机名称验证。 – Bruno 2011-12-13 20:06:41

5

正如我说在this answer

对于SSL/TLS是安全的,你至少需要3点:

  • 合适的加密套件,以及一个成功的握手。
  • 验证客户端是否信任服务器证书(通常是通过PKI模型中的已知CA)。
  • 验证证书是否属于客户机打算联系的服务器(主机名验证)。

第二点和第三点是通过证书执行。关于第三点,您正面临一个问题:主机名验证。

使用自签名证书是使用由CA(PKI的一部分)颁发的证书的替代品。这告诉你是否可以信任证书内容是真实的(如发行人声称)。通过签发和使用自签名证书,您可以自行声明其内容。你的客户必须明确地信任你说的话。对于可以说服客户将自签名证书作为可信证书进行安装的小型部署,这样可以。

主机名验证是在此之后的必要步骤。如果您使用护照检查某人的身份,则不足以检查您是否来自您承认的国家的真实护照:您还需要检查照片是否与您面前的人相匹配。 这里同样适用:您要连接的是我的主机名(或IP地址),并且它必须与您提供的证书中的主机名(或IP地址)匹配。

当然,localhost只能从本地机器本身访问,有点像说“我”。 作为服务器,您需要证书中的名称才能成为客户打电话给您的名称。 使用主机名而不是IP地址通常会更好。请注意,根据RFC 2818,如果您使用IP地址,则还需要在主题备用名称扩展名中(尽管有些浏览器在该要求上会灵活)。

(您可能也有兴趣this answer。尽管它是关于Java服务器的,但原理相同,因为证书验证取决于客户端,可以采用任何语言。)

编辑:(您已经删除了大部分初始问题,所以我上面的答案可能并不完全合乎情理......)

简而言之,是的,您可以生成一个通过IP地址标识计算机的证书。

理论上(RFC 2818),IP地址必须在证书的主题备用名称(SAN)扩展名中(它将是类型为“IP”的SAN,而不是“DNS”)。但是,在实践中,规范的这个特定部分只是被松散地遵循,因此您可能希望在您的主题DN的通用名称(CN)中拥有您的IP地址。如果浏览器未能充分实现RFC 2818,则甚至可以在主题DN中仅使用CN=your.ip.address,而不需要SAN条目。 (Java clients seem to be strict on this,但这可能不是您的测试用例所必需的。)

我不确定您生成的证书是什么。 makecert.exe seems not to be able to generate certificates with SANs, unfortunately.

在这种情况下,您可以使用OpenSSL生成自签名证书(例如,请参阅this answer底部的注释)。如果需要,创建一个PKCS#12(从您的私钥和生成的证书(openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx)延伸.pfx.p12文件) 之后,请考虑将.pfx文件中的证书配置到IIS Express中。证书和私钥加入你的证书库(很可能,双击应该触发正确的对话框),然后使用它(就像它来自CA一样);根据你如何配置IIS,它可能不得不涉及netsh。这里似乎有一个教程:http://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non-self-signed-certificate.aspxnetsh命令也在@MrZombie提到的this question中列出:您必须通过查看已安装的证书找到自签名证书哈希,并调整端口号根据你的设置。)

-1

是的,从IIS,从左边选择服务器节点,去服务器证书。从右侧的“操作”窗格中,选择创建自签名证书...为证书命名,就是这样!很简单...