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

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

对于开发环境,我可以在 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):

  1. 确定要将证书保存在哪个目录中
  2. 在该目录中创建一个名为的文本文件,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}为您用来访问网站的地址,例如"CN=localhost"

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

之后,我进入 IIS 管理器,站点 -> {站点名称} -> 绑定...(在“编辑站点”下)。然后我单击 https/443(因为我已经设置好了),编辑...并从列表中选择了新证书。

Firefox 抱怨我的网站正在使用自签名证书,所以我只是将其添加为例外,然后!它就成功了!

答案3

是的,我也收到了“指定的登录会话不存在”错误/警告消息。

我只需再次单击“确定”它就会接受它。

相关内容