生成 SSL 证书

生成 SSL 证书

我想知道是否有人知道如何使用 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

答案3

我之前已经解决了这个问题,但答案是这样的。

我设法使用以下网站生成自己的证书:配置Apache2以进行SSLTLS相互身份验证

我已经在两台 PC 之间对 openssl 进行了测试,并通过 Sierra Wireless 调制解调器和 openssl 服务器之间的无线电波进行了测试。

答案4

我去年写了一个脚本来帮我完成所有工作 - 创建一个假 CA 并使用该 CA 签署证书。如果您需要保持链条完整,请确保将 ca.crt 的内容添加到最终的 PEM 文件中。

http://web.archive.org/web/20101120140642/http://tacticalvim.wordpress.com/2010/06/20/sslkeygen-sh-complete-ssl-cert-creation-helper-script/

根据它的用途,您仍然会遇到与虚假签名者有关的 CA 问题,但从技术上讲它可能可以满足您的目的。

相关内容