Да, можно использовать SSL / TLS без сертификата сервера.См. https://security.stackexchange.com/questions/38589/can-https-server-configured-without-a-server-certificate
Вам необходимо программное обеспечение, которое поддерживает хотя бы один из наборов анонимных шифров SSL / TLS поддерживает , например TLS_DH_anon_WITH_AES_128_CBC_SHA256
.Согласно вики-записи OpenSSL Диффи-Хеллмана :
Анонимный Диффи-Хеллман использует Диффи-Хеллмана, но без аутентификации.Поскольку ключи, используемые при обмене, не аутентифицированы, протокол подвержен атакам «человек посередине».Примечание: если вы используете эту схему, вызов SSL_get_peer_certificate
вернет NULL
, потому что вы выбрали анонимный протокол.Это единственный раз, когда SSL_get_peer_certificate
разрешается возвращать NULL при нормальных обстоятельствах.
Вы не должны использовать Anonymous Diffie-Hellman.Вы можете запретить его использование в своем коде, используя "! ADH" при вызове SSL_set_cipher_list
.
Обратите внимание, что поддержка таких наборов шифров и конфигураций в большинстве доступных программ SSL / TLS либо не- существует или очень ограничен, так как такие конфигурации уязвимы для атак «человек посередине» - одна из тех вещей, которые используются для предотвращения SSL / TLS.Например, вам придется скомпилировать свой собственный код OpenSSL.
Если вы не управляете программным обеспечением на обоих концах вашего (-ых) канала (-ов) связи, то, по сути, нет способа реализовать такую систему.
И нет реальной причины для внедрения такой системы, поскольку она совсем не безопасна.
Но вы можете сделать это с большим усилием.