对于开发环境,我可以在 IIS7.5 中创建自签名证书。但该证书是 SHA-1,最近浏览器对此有抱怨。当我打开 FireBug 时,我看到以下警告:
“本网站使用 SHA-1 证书;建议您使用采用比 SHA-1 更强的哈希函数的签名算法的证书。”
我的问题是:
1)有没有办法创建比SHA-1更强的自签名证书?
2)如果没有,有没有办法告诉浏览器停止显示这些警告?
更新
我最终采用了 @vcsjones 的答案,但这只是暂时的。在让它发挥作用之前,我必须解决几个问题。
1) 出于某种原因,我无法导入带密码的证书。因此,我最终创建了一个没有密码的证书。
2) 当我通过 IIS 导入 .pfx 证书时,当我尝试在编辑绑定中应用新证书时,我不断收到“指定的登录会话不存在”的提示。因此我做了一些研究,发现了这个所以回答有用,特别是 Mike L 的回答。
我要补充的另一件事是,当您导入证书时,请记住选择 .pfx 证书。导入向导默认选择是 *.cer,您可以导入它(我犯了错误),但后来我无法在 IIS 服务器证书中看到证书。当我仔细查看时,发现图标中缺少小钥匙。现在,我对此进行了研究,我能够通过以下方式修复它KB-889651文章。因此请确保您导入了 .pfx,它无需修复即可工作。
另请注意,如果您对此证书有信任问题,也请将其导入“受信任的根证书颁发机构”。
答案1
当然。makecert
作为 Windows SDK 一部分的实用程序可以做到这一点:
makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer
该-a
参数设置哈希算法。这会生成一个 PVK 和一个 DER .cer 文件。当然,您也可以将通用名称更改为任何您想要的名称,我只是以 localhost 为例。您可以使用pvk2pfx
(也是 SDK 的一部分)将它们组合成 PFX(IIS 在导入证书时更喜欢使用的内容):
pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx
这只是将生成的两个文件makecert
合并为一个 PKCS12 .pfx 文件。
使用生成的 PFX 文件,您可以打开 IIS 并将其导入服务器证书下,然后更改站点的绑定以使用新证书。
答案2
我在工作时使用的是一台锁定的 Windows 7 Enterprise 计算机,因此无法安装 Windows SDK 来访问makecert
。以下是我创建 sha256 自签名证书的方法(取自https://core.telegram.org/bots/self-signed):
- 确定要将证书保存在哪个目录中
在该目录中创建一个名为的文本文件,
template.txt
其内容如下:[NewRequest] ; At least one value must be set in this section Subject = "CN={your.domain.com}" KeyLength = 2048 KeyAlgorithm = RSA HashAlgorithm = sha256 ;MachineKeySet = true RequestType = Cert UseExistingKeySet=false ;generates a new private key (for export) Exportable = true ;makes the private key exportable with the PFX
替换
{your.domain.com}
为您用来访问网站的地址,例如"CN=localhost"
- 打开命令提示符并切换到您的证书目录
- 跑步
certreq -new template.txt RequestFileOut
- 您需要知道序列号,因此运行
certutil -store -user my
以获取包含序列号的转储 {SERIALNUMBER}
用转储中的序列号和{YOURDER}.crt
输出文件的名称替换:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
{YOURDER}.crt
用输入文件的名称和{YOURPEM}.cer
输出文件的名称替换:certutil -encode {YOURDER}.crt {YOURPEM}.cer
{your.domain.com}
用您的实际(测试)域名和{YOURPKCS}.pfx
输出文件的名称替换:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain
之后,我进入 IIS 管理器,站点 -> {站点名称} -> 绑定...(在“编辑站点”下)。然后我单击 https/443(因为我已经设置好了),编辑...并从列表中选择了新证书。
Firefox 抱怨我的网站正在使用自签名证书,所以我只是将其添加为例外,然后!它就成功了!
答案3
是的,我也收到了“指定的登录会话不存在”错误/警告消息。
我只需再次单击“确定”它就会接受它。