2016-04-06 83 views
0

我試圖使用pjsip安裝中的pjsua程序在兩個虛擬機之間進行安全呼叫。我啓動該程序通過在每個節點上:嘗試進行TLS呼叫時TLS握手失敗的原因

pjsua-x86_64的未知-Linux的GNU --use-TLS

然後我進入,從而制通話並提交:SIP:xxx.xxx.xx.x :5061;運輸= TLS

在接收側予見: 握手失敗在接受xxx.xxx.xx.x:58392:沒有共享的密碼

在撥號側我看到: 無法發送請求msg INVITE/cseq = 17559(tdta0x1ab89e0)! err = 495040(sslv3警報握手失敗)

任何人都可以幫助我理解爲什麼會發生這種情況嗎?

+0

什麼類型的密鑰是在服務器使用?如果它的一個EC密鑰,然後看看[橢圓曲線密碼|命名曲線](http://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography#Named_Curves)。如果您使用的是域參數而不是OID,那麼它的確切症狀是*「no shared cipher」*。 – jww

+0

我是新來的這一切。我想要做的是https://trac.pjsip.org/repos/wiki/TLS,但我不知道根證書是什麼或者如何生成。 – user2747139

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306)。 – jww

回答

0

看起來服務器的密碼配置(在你的情況下是接收端)和客戶端(在你的情況下是撥號端)之間不匹配。

錯誤沒有共享密碼(警報40)表示,沒有在服務器端

你需要尋找到呼籲SSL_CTX_set_cipher_list使用可用的客戶端密碼的至少任何一個(如果你在兩端都使用OpenSSL)API。

嘗試在客戶機和服務器機器上配置通用卡。

有些時候,您可能會因公用證書使用的密碼不可用而出現相同的錯誤(無分類密碼)。更好地驗證第一步,然後驗證您的證書算法。

我也遇到了類似的問題,我的客戶端服務器配置。

這裏是一個參考:

"no shared cipher" error with python and OpenSSL