2010-09-14 154 views
0

Iam是這個論壇的新成員。openssl SSL_Connect with err 2

問題:

我有整合的OpenSSL在我project.project與gSOAP的實現。

在 「R =所以SSL_connect(soap-> SSL))< = 0)」

所以SSL_connect電話是無法進行的server.Both服務器和客戶端的連接在本地主機

我看到服務器準備接受的連接,因爲我看到下面netstat命令建立連接:

TCP cspxppgudepu:15000個cspxppgudepu.com:0 LISTENING TCP cspxppgudepu:15000您當前位置:2864 ESTABLISHED

以上15000端口用於服務器。

下面是客戶端連接: TCP cspxppgudepu:16000個cspxppgudepu.com:0 LISTENING

可是所以SSL_connect無法connect.It總是與返回代碼失敗-1 & ERR 2.

隨着出SSL連接,簡單的TCP連接,兩端都可以連接和通信。下面以無SSL

我的網絡配置設置網絡配置設置使用OpenSSL:

<NetworkConfig> 
      <Server Location="https://127.0.0.1:15000" /> 
      <Client Location="https://127.0.0.1:16000" /> 

我已經採取了兩個客戶端&服務器身份驗證爲假。

在此先感謝。 Pradeep Reddy。


更新,

所以SSL_connect與SSL_ERROR_WANT_READ.I沒有明白,客戶在等待服務器寫一些data.But我不明白是什麼在服務器端更改密碼。

請讓我知道,如何從這裏走。現在


SSL通信電子工作正常,如果我給服務器和客戶端和認證的根證書cacert.pem設置爲true.Instead給予相同的根證書cacert.pem我已經給clientcert.pem和分別在soap_ssl_client_context()和soap_ssl_server_context()調用中的servercert.pem。 (錯誤:14090086:lib(20):func(144):reason(134)「 和服務器端」錯誤:14094418:lib(20):func(148)回到頂端這篇文章中的信息適用於: ):原因(1048)「

但是客戶端證書和服務器證書都是從根證書」cacert.pem「在以下命令中生成的。

命令:openssl x509 -req -in clientreq.pem -sha1 -extensions usr_cert -CA root.pem -CAkey root.pem -CAcreateserial -out clientcert。pem -days 1095 和 命令:openssl x509 -req -in serverreq.pem -sha1 -extensions usr_cert -CA root.pem -CAkey root.pem -CAcreateserial -out servercert.pem -days 1095 錯誤我理解爲「錯誤:14094418:SSL例程:SSL3_READ_BYTES:tlsv1警報未知ca「。 但是這兩個證書都來自同一個根CA cacertpem。請提供您是否有任何修復。 我無法編輯帖子,所以發佈答案。 謝謝, Pradeep。

回答

0

首先,您必須先建立TCP連接,然後再致電SSL_connect()SSL_connect()只設置了SSL會話,並且它預期您使用SSL_set_fd()設置的文件描述符已經連接到另一端。其次,您必須在服務器端調用SSL_accept()(同樣,在已經建立底層TCP連接之後)。

+0

嗨,感謝您的投入。 – swi 2010-09-15 20:39:59