我正在測試Synapse並希望知道如何建立安全連接。我注意到它支持SSL,但我不確定它是否適合我的需求。我沒有CA的證書。我只想加密我的服務器程序和客戶端程序之間的所有數據。當然,我可以在發送之前自己加密數據。但是如果SSL可以加密數據,也許我可以使用它。據我所知,SSL是用於「加密」和「認證」的。我需要的只是「加密」。 Synapse可能嗎?如何使用Synapse建立安全連接?
UPDATE:
感謝來自daemon_x和突觸,盧卡斯葛鮑爾筆者幫助,我想我終於使它工作。下面是我所做的:
服務器端:
1)採用ssl_openssl在你的單位,並把「的libeay32.dll」和「ssleay32.dll」的exe文件的同一目錄
2)接受連接後,爲新創建的套接字添加以下代碼行。
fclient.SSLAcceptConnection;
客戶端:
1)在你的單元使用ssl_openssl並把 '的libeay32.dll' 和 'ssleay32.dll' 的exe文件
2)相同的目錄連接到服務器後,添加以下行。
fclient.SSLDoConnect;
如果沒有發生錯誤,連接現在是安全的。但是當你運行你的代碼時,如Synapse文檔中所述,你可能會注意到SSLAcceptConnection需要一些時間才能返回。所以如果你想加快速度,你最好先創建一個證書文件和私鑰文件。而SSLAcceptConnection
fclient.SSL.CertificateFile := 'bs-cert';
fclient.SSL.PrivateKeyFile := 'bs-privatekey';
前添加以下代碼如果沒有證書和私鑰,請參考「CreateSelfSignedCert」在ssl_openssl用於獲取自簽名的證書和私鑰。例如,可以通過WriteStrToStream將FCertificate和FPrivatekey保存到文件中並稍後使用它們。
我感謝您的幫助。我最困惑的是,我不知道如何在沒有證書時使用加密通道。在服務器端接受連接後,我嘗試調用「SSLAcceptConnection」。並且在連接到服務器之後在客戶端調用「SSLDoConnect」。他們「似乎」工作。但我可以在哪裏設置密碼?我試過「SSL.Password」,但似乎是解密證書。即使密碼不同,連接仍然建立。 – trudger 2011-06-14 01:48:04
@trudger您可以創建自簽名證書。 – Harriv 2011-06-14 05:35:57
是否有任何組件/代碼可以集成到我的程序中以生成證書?我認爲用戶自己生成證書有點複雜。 – trudger 2011-06-14 06:02:26