OpenSSL - 错误18在0深度查找:自签名证书

54

我试图创建一个SSL证书以便与MySQL一起使用,正如这里提到的一样: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

有人可以帮我根据上面链接中的文档生成没有任何错误的密钥吗?


MySQL文档的链接已经失效。我猜测你原来的链接可能是https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files.html。 - Tai Le
在服务器证书中,使用服务器主机名作为CN是实用的。此外,在MySQL 8发布后阅读本文的人们,创建MySQL 8证书的文档更加清晰(当然也适用于5.x)https://dev.mysql.com/doc/refman/8.0/en/creating-ssl-files-using-openssl.html#creating-ssl-files-using-openssl-unix-script - Lexib0y
2个回答

184

我认为您错过了指示的这个部分:

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

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


3
我有同样的问题:在输入某些显式名称的值后,您可以输入公共名称的值。 - Cerveser
4
这是目前为止最好的回答,非常感谢,我已经为此苦苦挣扎了几天。 - Jihane
2
不幸的是,我看到的所有指南都忽略了这个(相当关键的)要点。谢谢。 - SiHa
2
我在生成具有相同CN的ca.pem和client.pem时遇到了相同的问题,谢谢! - itlux

4
当您使用创建证书和密钥的openssl命令时,它会要求您填写一些字段,您将遇到以下通用名称选项:
Common Name (e.g. server FQDN or YOUR name) []: 

在这种情况下,您需要每次提供不同的名称,并且不要让它使用默认值。
例如:
CA证书:app-ca-cert。
服务器证书:app-server-cert。
客户端证书:app-client-cert。
正如指南所解释的那样,

重要提示

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接