OpenSSL – проверка POP3, IMAP, SMTP, WEB сервера с TLS/SSL/SASL

Использование OpenSSL для тестирования POP3, IMAP, SMTP, WEB сервера с TLS/SSL/SASL

POP3

Для тестирования работы TLS/SSL на POP3 сервере можно использовать входящий в
состав OpenSSL клиент s_client (для тестирования SSL-клиентов по аналогии можно
использовать s_server):

openssl s_client -connect имя_хоста:995

после чего можно сэмулировать типичную POP3-сессию:

 +OK Dovecot ready.
 user логин
 +OK
 pass пароль
 +OK Logged in.

выводим список сообщений на сервере и их размер:

 list
 +OK 2 messages:
 1 1759
 2 12422

читаем первое сообщение:

 retr 1
 +OK 1759 octets
 заголовки и текст

IMAP

Тестирование IMAP проводится в соответствии с теми же принципами:

 openssl s_client -connect imap_хост:993
 CONNECTED(00000003)
 ....
 * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
 login логин пароль
 a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR ... CONTEXT=SEARCH LIST-STATUS QUOTA] Logged in

выводим список папок:

 a002 list "" "*"
 * LIST (\HasChildren) "." "INBOX"
 * LIST (\HasNoChildren) "." "INBOX.INBOX_Trash"
 * LIST (\HasNoChildren) "." "INBOX.Trash"
 * LIST (\HasNoChildren) "." "INBOX.read"
 * LIST (\HasNoChildren) "." "INBOX.Queue"
 * LIST (\HasNoChildren) "." "INBOX.INBOX_Drafts"

посмотрим содержимое папки Inbox:

 a003 examine inbox
 * FLAGS (\Answered \Flagged \Deleted \Seen \Draft Junk NonJunk)
 * OK [PERMANENTFLAGS ()] Read-only mailbox.
 * 10 EXISTS
 * 0 RECENT
 * OK [UNSEEN 1] First unseen.
 * OK [UIDVALIDITY 1291459647] UIDs valid
 * OK [UIDNEXT 8026] Predicted next UID
 * OK [HIGHESTMODSEQ 2710] Highest
 a003 OK [READ-ONLY] Select completed.

В папке 10 сообщений, выведем содержимое текста четвертого сообщения, без заголовков:

 a004 4 rfc822.text
 * 4 FETCH (RFC822.TEXT {857}
 текст
 a005 OK Fetch completed.

выходим

 a005 logout
 * BYE Logging out
 a005 OK Logout completed.

Тестируем сайт по SHTTP:

openssl s_client -connect www.test.com:443
GET / HTTP/1.1
Host: test.com

SASL

Проверяем SASL-аутентификацию при отправке почты:

openssl s_client -connect smtp_хост:25 -starttls smtp

 220 mail.test.com ESMTP Postfix
 EHLO test.test.com
 250-mail.test.com
 250-PIPELINING
 250-SIZE 10240000
 250-ETRN
 250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
 250 8BITMIME
 AUTH PLAIN пароль_в_base64_нотации
 235 Authentication successful

BASE64

Перекодировать файл с паролем в base64-представление можно командой:

openssl enc -base64 -in file.txt -out mfile.b64

декодировать:

openssl enc -d -base64 -in file.b64 -out file.txt

Другие полезные команды:

Шифруем файл симметричным шифром blowfish (если необходимо сохранение в
base64-представлении добавляем опцию “-a”):

 openssl enc -e -salt -bf -in file.txt -out file.blowfish
 enter bf-cbc encryption password: пароль

расшифровываем:

 openssl enc -d -bf -in file.blowfish -out file.txt
 enter bf-cbc decryption password: пароль

Рассчитываем SHA1-хэш для файла:

 openssl dgst -sha1 -c file.txt
 SHA1(test.txt)= 15:85:f1:af:a7:ca:1c:1c:5a:8b:c3:a7:1e:7f:4b:bd:3c:d4:22:ca

Для перехвата и расшифровки SSL/TLS трафика в отладочных целях можно использовать утилиту ssldump:

наблюдение за активностью внутри SSL-сессии:

ssldump -a -A -H -i eth0

со служебными данными для полной отладки SSL-сессии:

ssldump -a -A -H -k server.pem -i eth0

для расшифровки содержимого сессии:

ssldump -d -k server.pem -i eth0

Для успешной расшифровки SSL-сессия должна быть перехвачена с самого начала,
включая момент обмена ключами на стадии инициирования сессии.