如何创build比SHA-1更强的自签名证书?

对于开发环境,我可以在IIS7.5中创build创build自签名证书。 但是该证书是SHA-1,最近浏览器正在抱怨。 当我打开FireBug时,我看到以下警告:

“该站点使用SHA-1证书;build议您使用带有使用比SHA-1更强的散列函数的签名algorithm的证书。”

所以我的问题是:

1)是否有办法创build比SHA-1更强的自签名证书?

2)如果没有,有没有办法告诉浏览器停止显示这些警告?

UPDATE

我结束了使用@vcsjones的答案,但那只是我到目前为止。 在这之前,我们需要解决一些问题,然后才能开始工作。

1)出于某种原因,我无法使用密码导入证书。 所以我最终创造了一个没有。

2)当我通过IIS导入.pfx证书时,当我尝试在“编辑绑定”中应用新证书时,我不断收到“指定的login会话不存在”。 所以我做了很less的研究,发现这个答案是有用的,特别是Mike L的答案。

另外我要补充的是,当你导入证书时,请记得select.pfx证书。 导入向导的默认select是* .cer,您可以导入(我犯的错误),但是我无法在IIS服务器证书中看到证书。 当我向近处看时,图标中缺less一​​点钥匙。 现在,我研究了,我能够通过KB-889651文章修复它。 所以请确保您导入.pfx,它将无需修复。

另请注意,如果您对此证书有信任问题,请将其导入“受信任的根证书颁发机构”。

当然。 作为Windows SDK的一部分的makecert实用程序可以这样做:

 makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer 

-a参数设置散列algorithm。 这就吐出了一个PVK和一个DER .cer文件。 你当然也可以把通用名改成你想要的任何东西,我只是用localhost作为例子。 您可以使用pvk2pfx (也是SDK的一部分)将它们组合成PFX(导入证书时使用的IIS):

 pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx 

这只需要生成两个文件makecert并将它们组合成一个PKCS12 .pfx文件。

使用生成的PFX文件,您可以打开IIS并将其导入服务器证书下,然后更改站点的绑定以使用新证书。

我正在使用locking的Windows 7企业计算机,因此我无法安装Windows SDK以访问makecert 。 以下是我创build我的sha256自签名证书的方法(摘自https://core.telegram.org/bots/self-signed ):

  1. 确定要保存证书的目录
  2. 在该目录下创build一个名为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 
  3. {your.domain.com}replace为您将用于访问您的网站的地址,例如"CN=localhost"

  4. 打开命令提示符并切换到您的证书目录
  5. 运行certreq -new template.txt RequestFileOut
  6. 您需要知道序列号,因此运行certutil -store -user my以获取包含序列号的转储
  7. {SERIALNUMBER}replace为转储中的序列号和{YOURDER}.crt中的输出文件的名称: certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. {YOURDER}.crtreplace为input文件的名称,将{YOURPEM}.cer与输出文件的名称replace为: certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. {your.domain.com}replace为实际(testing)域名, {YOURPKCS}.pfxreplace为输出文件的名称: certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

之后,我去了IISpipe理器,站点 – > {站点名称} – >绑定…(在“编辑站点”下)。 然后我点击了https / 443,因为我已经设置好了,编辑…并从列表中select了新的证书。

Firefox抱怨说我的网站正在使用自签名证书,所以我只是把它作为一个例外添加进来,瞧! 有效!

是的,我得到了“指定的login会话不存在”错误/警告消息了。

我只是再次点击确定,它接受了。