我想知道是否有人知道如何使用 openssl 生成签名的 CA 证书和密钥?我找到了这个网站 (http://dev.mysql.com/doc/refman/5.1/en/secure-create-certs.html) 为 mysql 服务器生成客户端和服务器证书,但示例是自签名证书。我使用以下命令使用 openssl 和生成的证书和密钥运行服务器和客户端:
openssl s_server -accept 6502 -cert server-cert.pem -key server-key.pem -CAfile ca-cert.pem -www
openssl s_client -connect 192.168.1.92:6502 -cert client-cert.pem -key client-key.pem -CAfile ca-cert.pem
我得到的错误输出是“验证返回代码:18(自签名证书)”。
保罗
答案1
创建根 CA(自签名):
让我们详细了解一下这些选项:
- x509标识需要证书,而不仅仅是证书请求(见下文)。
- 天30000 将证书的过期时间设置为 30000 天。您可能希望延长此期限。记下过期日期,以便在必要时进行续订!
- sha1指定应使用 SHA1 加密。rsa:2048 将密钥设置为 2048 位 RSA。
- 节点未指定密码。
- 键控输出和 -out 指定存储证书和密钥的位置。密钥应仅供 root 读取;证书可供所有人读取,并且必须可供运行 Apache 的用户读取。
- 主语标志设置公司名称、部门名称和网站地址。如果您忽略这些,系统会提示您输入。CN 必须与您的网站地址相同,否则证书将不匹配,用户在连接时会收到警告。确保您不使用质询密码。
创造它 :
sudo openssl req -x509 -nodes -newkey rsa:2048 -sha1 -keyout rootkey.key -out rootca.crt -passin pass:root -days 30000 -subj "/C=DU/ST=Dubai/L=TownCenter/O=AmesCom/CN=AmesCom Int" -config openssl.cnf.my
手动加密密钥:
由于 -nodes 选项,密钥未加密,因此我们手动加密它:
sudo cp rootkey.key rootkey.key.org
sudo openssl rsa -in rootkey.key.org -out rootkey.key
测试一下:
如需立即测试,您可以按照以下两种方式进行:
openssl x509 -text -noout -in rootca.crt
或者在浏览器上检查其内容:
cp rootca.crt /var/www/html/
从浏览器请求地址:
http://yourserverdomain/rootca.crt
现在您可以创建证书请求并使用此自签名证书对其进行签名
答案2
- 您可以从商业提供商处购买签名的证书。
- 您可以使用开放认证
- 您可以建立自己的证书颁发机构
- 您可以使用自签名证书,如下所示: http://www.stunnel.org/?page=howto
答案3
我之前已经解决了这个问题,但答案是这样的。
我设法使用以下网站生成自己的证书:配置Apache2以进行SSLTLS相互身份验证
我已经在两台 PC 之间对 openssl 进行了测试,并通过 Sierra Wireless 调制解调器和 openssl 服务器之间的无线电波进行了测试。
答案4
我去年写了一个脚本来帮我完成所有工作 - 创建一个假 CA 并使用该 CA 签署证书。如果您需要保持链条完整,请确保将 ca.crt 的内容添加到最终的 PEM 文件中。
根据它的用途,您仍然会遇到与虚假签名者有关的 CA 问题,但从技术上讲它可能可以满足您的目的。