【发布时间】:2012-12-13 08:26:55
【问题描述】:
我正在尝试运行 openSSL 示例,(源代码从 here 下载)。我已经设法构建它并在端口 4433 上运行“wserver”示例(使用 VirtualBox 在 Ubuntu 12.10 虚拟机上运行)
然后我尝试从 Windows 8 启动客户端,但我不断在服务器终端上显示SSL accept error。
我看到this 的帖子并从接受的答案中复制了 bash 脚本,使用它,我设法创建了一个新的 root.pem 和其他证书,但我仍然遇到同样的错误
(不知道是否重要,我正在使用端口 4433,因为虚拟机由于某种原因无法绑定到 443,是的,我也在客户端上更改了它)
另外,用 C 编写的服务器。
有什么想法吗? 谢谢!
编辑
我发现错误发生在这一行
r=SSL_accept(ssl);
我使用检查了返回到 r 中的错误
SSL_get_error(ssl,r);
它似乎是SSL_ERROR_SYSCALL
我检查了ERR_get_error();,它返回了0
意义
如果 ret == 0,则观察到违反协议的 EOF
还不知道是什么意思..
编辑 2
我检查了客户端返回代码,它是错误12045
其中,根据 MSDN 是
ERROR_INTERNET_INVALID_CA
12045
该函数不熟悉生成服务器证书的证书颁发机构。
但是当使用虚拟机提供的客户端时,连接很好,没有证书问题
如 Microsoft here 所示,覆盖 12045 会导致 12038 错误,即
ERROR_INTERNET_SEC_CERT_CN_INVALID
SSL certificate common name (host name field) is incorrect. For example, if you entered www.server.com and the common name on the certificate says www.different.com.
这有帮助吗? 再次感谢!
【问题讨论】:
-
你用的是什么客户端?我建议你也看看另一边发生了什么。
-
只是一个朋友给我检查连接的小客户端。我已经设法通过 https 获取 mail.google.com 的 index.html
-
您可以尝试使用示例中的客户端吗?
-
它适用于示例中的客户端(均在虚拟机中启动)@User1 r 为 0
-
再次编辑了我的问题
标签: c ssl openssl ssl-certificate