我需要 HTTPS 服务器的 SSL 证书。我想提供自签名证书和 CA 签名证书之间的选择。
我可以使用以下 OpenSSL 命令生成自签名 SSL 证书:
openssl req -newkey rsa:512 -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
openssl dhparam -inform pem -in cert.pem -outform pem -out dhparam.pem 512
cat dhparam.pem >> cert.pem
如果我想要一个 CA 签名的证书,我可以生成一个 CSR(证书签名请求):
openssl req -newkey rsa:512 -nodes -out cert.csr -keyout cert.key
并将其发送给一个 CA。接着 ?我想知道 CA 发回的是什么:只有证书,还是证书和DH 参数,因为它们用于浏览器和服务器之间的协商?
编辑:似乎 CA 只提供证书,这意味着我需要连接
- 私钥
- 证书
- DH参数
有人可以确认吗?
是的,证书颁发机构接受您的证书签名请求并生成一个签名证书,然后您可以在您的网站上使用该证书。DH 参数不是特定于证书的,因此 CA 没有理由参与其中,显然将您的密钥发送给任何人都是一个坏主意。
证书只是一个数字签名,可以“验证”您的公钥的值(CN、OU、到期等)并被验证为由 CA 制作。我不确定你的“连接”评论,但你基本上已经搞定了。
其他一切都在您的最后设置和指定 - 私钥(在您的服务器上保密),公钥(发送给所有要求它的人)和 SSL 协商参数(由您的 Web 服务器软件设置。)
(根据我的经验,混淆常常只是因为可以存储密钥、签名、证书、CSR 等的各种不同格式的文件。)