据我了解,实际上可以创建颁发给 IP 地址的证书。是否可以在 IIS Express 中这样做?
请注意,这仅用于测试。
编辑
人们似乎错过了我问题的真正实质,所以我删除了额外的细节。
据我了解,实际上可以创建颁发给 IP 地址的证书。是否可以在 IIS Express 中这样做?
请注意,这仅用于测试。
编辑
人们似乎错过了我问题的真正实质,所以我删除了额外的细节。
谢谢@Bruno 的所有建议!!使用单独的工具来创建 SSL 证书让我朝着正确的方向前进。
首先,我尝试了 IIS 6selfssl
命令行工具,该工具可能也适用于使其工作的第一步(但在找到我当前的解决方案后我还没有对其进行测试)。第一步是创建证书,第二步是将该证书绑定到我的 IP/端口。
我使用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
要将证书绑定到我的 IP/端口,我使用了netsh。ipport
应更改为您的 IP/端口。appid
是一个 GUID,我不认为这对你设置它很重要。certhash
您可以从Thumbnail
证书本身的字段中获取,但您必须删除哈希中的空格。
netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint
正如我在这个答案中所说:
要使 SSL/TLS 安全,您至少需要 3 点:
第二点和第三点由您的证书强制执行。您面临关于第三点的问题:主机名验证。
使用自签名证书可以替代使用 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 的方式,它可能必须涉及。似乎有这里有一个教程:.p12
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx
.pfx
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-自netsh
签名证书。
_ )
据我了解这个问题,除非您的证书是由具有实际可信度的证书颁发机构颁发的,否则您将不断收到错误。
(通过“可信的证书颁发机构”我的意思是“你购买证书的地方”)
http://www.gerv.net/security/self-signed-certs/ <--关于这件事的有趣读物。