根据我的理解,实际上可以创建颁发给IP地址的证书。是否可以在IIS Express中执行此操作?
请注意,这仅供测试。
修改
人们似乎错过了我的问题的真正的肉和土豆,所以我删除了额外的细节。
答案 0 :(得分:6)
感谢@Bruno提出的所有建议!!使用单独的工具创建SSL证书让我朝着正确的方向前进。
首先,我尝试了IIS 6 selfssl
命令行工具,该工具可能在第一步工作时也能正常工作(但在找到我当前的解决方案后我还没有测试过)。第一步是创建证书,第二步是将证书绑定到我的IP /端口。
我使用Visual Studio命令提示符中的makecert来创建我的证书(这是我认为IIS 6资源工具包中的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
要将证书绑定到我使用netsh的IP /端口。 ipport
应更改为您的IP /端口。 appid
是一个GUID,我不认为这对你设定的内容很重要。 certhash
您可以从证书本身的Thumbnail
字段获取,但您必须删除哈希中的空格。
netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint
答案 1 :(得分:5)
正如我在this answer中所说:
要使SSL / TLS安全,您至少需要3分:
第二和第三点由您的证书强制执行。您在第三点遇到问题:主机名验证。
使用自签名证书可替代使用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底部的注释)。如果需要,请从您的私钥和生成的证书(.pfx
)创建PKCS#12(扩展名为.p12
或openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx
的文件。
在此之后,请查看将.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.aspx
(netsh
命令也列在@MrZombie提到的this question中:您必须通过查看已安装的证书找到自签名证书哈希值,并根据您的设置调整端口号。)
答案 2 :(得分:0)
据我所知,除非您的证书是由具有实际可信度的证书颁发机构颁发的,否则您将继续收到错误。
(“可靠的证书颁发机构”是指“你购买证书的地方”)
http://www.gerv.net/security/self-signed-certs/< - 有趣的阅读此事。
答案 3 :(得分:0)
独立于IIS和平台,您只需要一个Web浏览器:
答案 4 :(得分:-1)
是,从IIS,从左侧选择服务器名称节点,转到服务器证书。从右侧“操作”窗格中,选择“创建自签名证书”...为证书命名,就是这样!非常简单...