Как мне регистрировать tls-шифрованный SMTP-трафик?
Я хотел бы знать, что мой местный постфикс говорит smtpd Amazon SES после STARTTLS. В простом тексте, чтобы я мог понять это. Amazon SES требует TLS, поэтому я не могу временно отключить его.
В настоящее время я регистрирую обе части трафика с помощью этого трюка:
mkfifo proxypipe
cat proxypipe | nc -l 11111 | tee -a inflow | nc email-smtp.us-east-1.amazonaws.com smtp | tee -a outflow 1>proxypipe
и затем у меня есть постфикс говорить с localhost:11111 вместо email-smtp.us-east-1.amazonaws.com:25. Это дает хорошую расшифровку, если они говорят в открытом тексте. Как только появляется STARTTLS, все, конечно, становится бредом.
Есть ли какой-то трюк, который я могу направить через openssl, или постобработку, используя openssl или что-то подобное, чтобы выяснить, что именно они сказали друг другу? Поиск в Google не дал никакого ответа.
2 ответа
Не беспокойтесь о прослушивании сетевого подключения; как объяснил @voretaq7, вы не можете. Вместо этого попросите postfix зарегистрировать соединение, добавив IP-адрес удаленного SMTP-сервера в debug_peer_list
,
И если это не дает вам достаточно деталей, чтобы понять, что происходит, вы можете установить smtp_tls_loglevel 4
чтобы получить полный дамп всего, что прошло по проводу.
Как только вы закончите, не забудьте изменить свою конфигурацию обратно. Вы не хотите оставлять отладку дольше, чем это необходимо.
Позвольте мне перефразировать ваш вопрос:
Я хочу вставить что-то посередине соединения, зашифрованного по протоколу TLS, которое показывает мне открытый текст, который отправляется.
,,, Ну, теперь это не будет очень безопасно, не так ли? Я имею в виду, что весь смысл TLS состоит в том, чтобы предотвратить именно то, что вы пытаетесь сделать! - Так что нет, то, что вы просите, НЕ возможно, и при этом это не близко к уровню регистрации, какой бы ни захотел здравомыслящий админ.
Все, что вы хотите знать, это то, к кому вы подключились (удаленная система), что вы им сказали (почта от А до Б) и что они сказали (ОК, Отложено, Отклонено).
Если вы действительно хотите подслушивать соединение TLS, вы должны обмануть свой сервер, подключив его к прокси-серверу, который предоставляет поддельный SSL-сертификат (для которого у вас есть ключ), затем прокси-сервер может расшифровать данные (и зарегистрировать их), и затем повторно зашифруйте его для пересылки на реальные серверы Amazon.
Вы могли бы установить такого зверя с OpenSSL s_client
а также s_server
подсистемы, но реализация такого зверя оставлена в качестве упражнения для читателя.