OpenSSL - 0深度查找时出错18:自签名证书

Sat*_*ish 25 mysql ssl openssl

我试图创建一个与MySQL一起使用的SSL证书,如下所述:http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-certs.html

在验证证书时,我收到以下错误

  # openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
    server-cert.pem: C = IN, ST = KERALA, L = COCHIN, O = ABCD, OU = OPERATIONAL, CN = SATHISH, emailAddress = sathish@abcd.com
    error 18 at 0 depth lookup:self signed certificate
    OK
    client-cert.pem: C = IN, ST = KERALA, L = COCHIN, O = ABCD, OU = OPERATIONAL, CN = sathish, emailAddress = sathish@abcd.com
    error 18 at 0 depth lookup:self signed certificate
    OK
Run Code Online (Sandbox Code Playgroud)

有人可以根据上面链接中的文档帮助我生成密钥而不会出现任何错误.

gtr*_*rig 81

我想你错过了这部分说明:

无论您使用哪种方法生成证书和密钥文件,用于服务器和客户端证书/密钥的公用名称值都必须与用于CA证书的公用名称值不同.否则,证书和密钥文件将不适用于使用OpenSSL编译的服务器.

当OpenSSL提示您输入每个证书的公用名时,请使用不同的名称.

  • 我遇到了同样的问题:在您为 Distinguished Name 输入一些值后,您可以输入 Common Name 的值。 (2认同)
  • 这是这个问题的最佳答案,非常感谢您,我已经为此苦苦挣扎了好几天。 (2认同)
  • 当使用相同的 CN 生成 ca.pem 和 client.pem 时,我遇到了同样的问题,谢谢! (2认同)

Ahm*_*yeb 5

当您使用openssl创建证书和密钥的命令时,它会要求您填写一些字段,您将遇到Common Name如下选项:

Common Name (e.g. server FQDN or YOUR name) []: 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您需要每次提供不同的名称,而不是让它使用默认值。

例如:

CA 证书:app-ca-cert。

服务器证书:应用程序服务器证书。

客户端证书:应用程序客户端证书。

正如指南所解释的

重要的

无论使用哪种方法生成证书和密钥文件,用于服务器和客户端证书/密钥的公用名称值都必须不同于用于 CA 证书的公用名称值。否则,证书和密钥文件不适用于使用 OpenSSL 编译的服务器。