【发布时间】:2012-02-22 18:28:08
【问题描述】:
我有一个网络服务器,我在 (www.trailmyx.com) 上经营一家小型副业。最近我开始开发一些基本的 SSL 套接字代码(在 C++ 中),我编写了一个与 OpenSSl 连接并执行 http GET 的小型测试程序。除了我自己的以外,我可以在端口 443(或任何其他站点)上成功地使用我的客户端对抗 www.google.com。
当我尝试对自己的服务器进行 SSL_get_verify_result(ssl) 时,我得到了返回:X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT。
现在,当我在浏览器 (https://www.trailmyx.com) 中访问我的网站时,我可以检查证书并且一切正常...它不会显示为自签名。
同样,当我对我的服务器使用 wget 时,我得到了同样的自签名证书错误。
我的直觉是我的网站以某种方式配置错误,但如果是这样,浏览器如何做到这一点?它们是浏览器知道的其他一些 OpenSSL 调用序列吗?
注意:当 wget 针对我的服务器返回时,它会从证书中打印一些信息。这些信息都不是有效的(例如:/C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit)我强烈怀疑由于某种原因,在某些情况下 apache 正在返回一个自签名证书... 但为什么?浏览器是如何做到的?顺便说一句-CURL 工作得很好。
【问题讨论】:
-
也许您浏览器的受信任 CA 列表与 OpenSSL 使用的不同?
-
@BrendanLong - 如果是这样,为什么 SELF_SIGNED_CERT 错误?而不是更一般的错误,它只是未能通过身份验证?
-
另外,wget godaddy.com(对我的服务器失败)对 godaddy.com(谁是 CA)有效...