Я тестирую Synapse и хочу знать, как установить безопасное соединение. Я заметил, что он поддерживает SSL, но не уверен, подходит ли он моим потребностям. У меня нет сертификата из ЦС. Я просто хочу зашифровать все данные между моей серверной программой и клиентской программой. Конечно, я могу сам зашифровать данные перед отправкой. Но если SSL может зашифровать данные, возможно, я смогу просто использовать его. Насколько я знаю, SSL предназначен для «шифрования» и «аутентификации». Мне нужно только «шифрование». Возможно ли это с Synapse?
ОБНОВЛЕНИЕ:
Спасибо за помощь от daemon_x и автора Synapse, Лукаса Гебауэра, я думаю, что наконец-то все заработало. Вот что я сделал:
Сторона сервера :
1) Использует ssl_openssl в вашем устройстве и помещает 'libeay32.dll' и 'ssleay32.dll' в тот же каталог с исполняемым файлом
2 ) После того, как соединение принято, добавьте следующие строки кода для вновь созданного сокета.
fclient.SSLAcceptConnection;
Клиентская сторона :
1) Использует ssl_openssl в вашем устройстве и помещает 'libeay32.dll' и 'ssleay32.dll' в тот же каталог с исполняемым файлом
2) После подключения к серверу добавьте следующую строку.
fclient.SSLDoConnect;
Если ошибок не произошло, соединение теперь безопасное. Но когда вы запускаете свой код, как сказано в документе Synapse, вы можете заметить, что SSLAcceptConnection требует некоторого времени для возврата. Поэтому, если вы хотите ускорить процесс, вам лучше заранее создать файл сертификата и файл закрытого ключа. И добавьте следующий код перед SSLAcceptConnection
fclient.SSL.CertificateFile := 'bs-cert';
fclient.SSL.PrivateKeyFile := 'bs-privatekey';
. Если у вас нет сертификата и закрытого ключа, обратитесь к «CreateSelfSignedCert» в ssl_openssl для получения самозаверяющего сертификата и закрытого ключа. Вы можете сохранить, например, с помощью WriteStrToStream, FCertificate и FPrivatekey в файлы и использовать их позже.