制作 Windows 证书说它的目的是“确保远程计算机的身份”

信息安全 tls 视窗 公钥基础设施
2021-08-25 18:13:19

当我在 Windows 中双击它时,我希望我的证书显示如下:


(来源:devcentral.f5.com

如果我只是双击随机证书,我会得到:

对应的证书是这样的:

-----BEGIN CERTIFICATE-----
MIICCzCCAXagAwIBAgIDMTI1MAsGCSqGSIb3DQEBBTBoMQswCQYDVQQGEwJVUzET
MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxQNTW91bnRhaW4gVmlldzETMBEG
A1UEChQKR29vZ2xlIEluYzEXMBUGA1UEAxQOd3d3Lmdvb2dsZS5jb20wIhgPMjAx
MjExMjUwNzE0MTJaGA8yMDEzMTIyNTA3MTQxMlowHjEcMBoGA1UECgwTcGhwc2Vj
bGliIGRlbW8gY2VydDCBnTALBgkqhkiG9w0BAQEDgY0AMIGJAoGBAMX7X83YPC92
SGgewurwucf30AQZU4amihKls8J7Bu5l6qv8ONv3JI9qvY8vJKhj6QHZABvFSCk7
/nsilYhptD2MMUjOeosJwvNcqIo5acy/gox/nnInqnCWqhNtQ+DJDrsJEB+NxoNb
1VD9PN0pqF3EsU8EAQgSkRfbdikuFMs1AgMBAAGjDzANMAsGA1UdDwQEAwIHgDAL
BgkqhkiG9w0BAQUDgYEAMtVKyBpbvD2txhlRtA3VHoL1Zp9E7CN/EqFxpAG7bwZT
8D1gifeff4tGH0zkbGvv+5kb5exBZ+PhGsaaHVZoBQVO33Rkr32rfMeMa7PYb76L
i+f0mOp1QfPbrQuvT/uJx8AUv/Owsk5zLyE7JznsvYQ7VeGARRAike2ThHGcZQ8=
-----END CERTIFICATE-----

如果我导入签名证书,它将显示如下:

这很有趣,但它并没有告诉我如何让证书说“确保远程计算机的身份”。有任何想法吗?

3个回答

如果我可以使用 OpenSSL,我只需在 openssl.conf 中添加以下几行:

keyUsage = digitalSignature
extendedKeyUsage=serverAuth

但不知道如何extendedKeyUsage在 PHPSecLib 中添加

TL;博士

从 Verisign、Comodo 等处购买证书,他们将确保您始终获得适用于 Web 浏览的证书。

第 1 部分:“信息不足,无法验证”

看来这是由 PHP 生成的自签名证书。它实际上说它是由“某人”发布的。除非“某人”是您想要部署到每台计算机的合法证书(不太可能),否则您将收到此错误。

启动证书管理器并查看您的用户帐户和机器的 Windows 的“受信任的根”证书(有两个地方需要检查)。在代表所有对您的系统有效的 CA 的文件夹(受信任的根目录)中。在此处添加证书意味着您信任它们来控制您的计算机的安全性,而删除它们意味着您不信任它们。我不建议更改此设置并将其留给有经验的 PKI 人员来添加和删除此文件夹的内容。

否则,请查看http://security.stackexchange.com以获取更多与 PKI 相关的信息,这些信息将教育您如何不自暴自弃。

第 2 部分:“所有应用程序策略”

“所有应用程序策略”部分包括“确保远程计算机的身份”。

如果您想要一个更受约束的证书(一件好事),那么您应该让您的 PHP 应用程序(phplib 演示证书)转到受信任的 CA 并使用适当的证书模板。

你采取的方式取决于:

  • 您生成证书的实用程序(在这种情况下为 PHP)
  • 您使用什么 CA(它是供所有人使用还是仅在您的公司环境中使用的公共 CA)
  • CA - 有关如何将颁发的证书限制为仅具有您指定的密钥用法的特定详细信息。

这是一个提示,常规选项卡不会显示很多重要信息。单击“详细信息”并查看密钥用法和增强的密钥用法。它们不仅会为您提供您正在寻找的友好文本,还会为您提供在让您的内部 CA 颁发正确证书时可能需要的 OID。

您遇到此问题的原因是您正在打开通用 X.509 证书。

Microsoft 需要包含签名 CA 的 PKCS7 证书。如果它在证书本身中没有签名者公共证书(无论签名者公共证书是否在您的本地证书存储中),它将被视为非法。