我有来自的 SSL 证书sslforfree。我有ca-bundle
和certificate
它的private
密钥。
我想为不同的子域创建自己的证书。我希望能够以某种方式使用现有证书对该证书进行签名,以便它能够通过浏览器、邮件客户端和其他客户端进行的所有 SSL 检查。
我完成了几十个教程,但要么我错过了重要的细节,要么这些教程不是我想要的。
有人能帮助我吗?我该如何使用openssl
来签署我的新证书CentOS 7
?
答案1
从技术上讲,您可以这样做,但没有人会信任这些证书。您的 SSL 证书*不允许*签署其他证书。
如果您查看证书,您可能会发现Basic Constraints
证书扩展,其中说明了主题类型:最终实体或 CA。isCA
位将设置为 0,表示证书持有者是最终实体。证书验证代码将严格检查此字段,如果发现最终实体证书被用于签署其他证书,则会自动拒绝这些证书。供参考:RFC 5280§4.2.1.9
答案2
使用以下命令查看您的证书openssl x509 -text -in filename
。查看CA:假? 这是一个标志,表示该证书不能用作 CA,或签署从属证书。
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
...
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
Validity
Not Before: Jul 8 22:26:53 2019 GMT
Not After : Oct 6 22:26:53 2019 GMT
...
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Basic Constraints: critical
CA:FALSE
没有受信任根的 CA 会向您提供启用了该功能的证书。如果他们这样做了,您将能够对世界上的任何人进行 MITM 攻击。
我想为不同的子域创建自己的证书。
只需使用 letsencrypt。您可以获得所有想要的免费证书,这些证书可以通过 DNS 或 HTTP 质询进行验证。您可以使用官方客户端或第三方客户端。Letsencrypt 有很多易于使用的客户端。