Здравствуйте, есть теоретический вопрос для решения прикладной задачи.
с недавнего времени MTA Exim поставляется с GNU-TLS вместо OpenSSL.
Хочется понять принцип работы сетевых соединений.
Пример: 25 порт:
telnet otherhost 25
Соединение на SSL протоколе.
openssl s_client -connect sub.example-one.org:465
...
Start Time: 1448072426
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)
---
220 mail.otherhost.com ESMTP Exim 4.84 Sat, 21 Nov 2015 05:20:26 +0300
То же SSL
gnutls-cli -p 443 sub.example-one.org
....
- Status: The certificate is NOT trusted. The certificate issuer is unknown. The name in the certificate does not match the expected.
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.
*** Handshake has failed
GnuTLS error: Error in the certificate.
Я так понимаю что многие клиенты не соединяются применяя команды OpenSSL и GnuTLS, но каким тогда образом происходит такое соединение?
root@otherhost:/var/log# telnet otherhost.com 465
Trying 5.39.81.129...
Connected to otherhost.com.
Escape character is '^]'.
тут как бы ничего не видно и не понятно что дальше делать.
Проблема в том, что OpenSSl и GnuTLS имеют различный уровень дефолтного доверия к сертификатам и то, что работает с первым - выдает ошибку на втором.
Соответственно проблему можно решить по разному (возможно)
1) Как сгенерировать (самоподписанные) сертификаты которые будет принимать GnuTLS
2) Можно ли прописать в конфигаруции GnuTLS запуск с параметром --tofu (доверять) всякий раз когда его вызывает программа.
3) Как можно просимулировать SSL/TLS запрос через Telnet без вызова OpenSSL и GnuTls.