7

据我了解,实际上可以创建颁发给 IP 地址的证书。是否可以在 IIS Express 中这样做?

请注意,这仅用于测试。

编辑

人们似乎错过了我问题的真正实质,所以我删除了额外的细节。

4

3 回答 3

9

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

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

  1. 我使用Visual Studio 命令提示符中的makecert来创建我的证书(我认为 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

于 2011-12-14T13:22:04.823 回答
7

正如我在这个答案中所说:

要使 SSL/TLS 安全,您至少需要 3 点:

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

第二点和第三点由您的证书强制执行。您面临关于第三点的问题:主机名验证。

使用自签名证书可以替代使用 CA(PKI 的一部分)颁发的证书。这告诉您是否可以相信证书内容是真实的(如颁发者所声明的那样)。通过颁发和使用自签名证书,您可以自己声明其内容。你的客户必须明确地相信你所说的。这适用于小型部署,您可以说服客户端将您的自签名证书安装为受信任的证书。

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

当然,localhost只能从本地机器本身访问,有点像说“我”。 作为服务器,您需要证书中的名称作为您的客户将要称呼您的名称。 通常最好使用主机名而不是 IP 地址来执行此操作。请注意,根据RFC 2818,如果您使用 IP 地址,它还需要在主题备用名称扩展中(尽管某些浏览器会灵活满足该要求)。

(您可能也对这个答案感兴趣。虽然它是关于 Java 服务器的,但原理是一样的,因为证书验证取决于客户端,可以是任何语言。)

编辑:(你已经删除了你最初的问题的很大一部分,所以我上面的回答可能并不完全有意义......)

简而言之,是的,您可以生成通过 IP 地址识别机器的证书。

理论上 ( RFC 2818 ),IP 地址必须在证书的主题备用名称 (SAN) 扩展中(它将是“IP”类型的 SAN,而不是“DNS”)。然而,在实践中,规范的这个特定部分只是松散地遵循,因此您可能希望在您的主题 DN 的通用名称 (CN) 中包含您的 IP 地址。如果浏览器未能充分实现 RFC 2818,您甚至可以不使用仅CN=your.ip.address在主题 DN 中使用,而无需 SAN 条目。(Java 客户端似乎对此很严格,但这对于您的测试用例可能不是必需的。)

我不确定您使用什么生成证书。makecert.exe不幸的是,似乎无法使用 SAN 生成证书。

在这种情况下,例如,您可以使用 OpenSSL 生成自签名证书(请参阅此答案底部的注释)。如果需要,创建一个 PKCS#12(使用您的私钥和生成.pfx的证书(您的证书存储(很可能,双击应该触发正确的对话框)。然后,使用它(好像它来自 CA);根据您配置 IIS 的方式,它可能必须涉及。似乎有这里有一个教程:.p12openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx.pfxnetshhttp://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non-自netsh签名证书。 _ )

于 2011-12-13T20:05:58.173 回答
-1

据我了解这个问题,除非您的证书是由具有实际可信度的证书颁发机构颁发的,否则您将不断收到错误。

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

http://www.gerv.net/security/self-signed-certs/ <--关于这件事的有趣读物。

于 2011-12-13T19:22:28.080 回答