我有一个网络服务器,我在(www.trailmyx.com)上运行一个小型企业。最近我开始开发一些基本的SSL套接字代码(使用C++),并且我编写了一个与OpenSSl连接并执行http GET的小型测试程序。我可以使用我的客户端在www.google.com 443端口(或任何其他站点)上成功使用,除了我自己的。为什么我的SSL代码只能对MY webserver失败?
当我尝试对我自己的服务器使用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会返回一个自签名证书... 但为什么?那么浏览器如何做呢? BTW-CURL工作得很好。
也许可信CA的浏览器的列表不同的是一个比OpenSSL的使用? – 2012-02-22 18:30:28
@BrendanLong - 如果是这样,为什么SELF_SIGNED_CERT错误?而不是一个更通用的错误,它只是未通过身份验证? – dicroce 2012-02-22 18:35:22
此外,wget https://www.godaddy.com(这对我的服务器失败)对https://www.godaddy.com(谁是CA)工作... – dicroce 2012-02-22 18:37:04