LINUX.ORG.RU
ФорумAdmin

OpenSSL Загрузка почты с pop.gmail.com


0

1

Всем привет.

Не могу понять в чем ошибка.
Я загружаю почту с pop.gmail.com:995 используя командную строку:

openssl s_client -connect pop.gmail.com:995
CONNECTED(00000003)
depth=1 /C=US/O=Google Inc/CN=Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com
i:/C=US/O=Google Inc/CN=Google Internet Authority
1 s:/C=US/O=Google Inc/CN=Google Internet Authority
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
SERTIFICATE SEQ
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority
---
No client certificate CA names sent
---
SSL handshake has read 1714 bytes and written 307 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-SHA
Session-ID: 8A574C8AA1E756DC514E98DE08B3CC710DA30C7DAB7B3115EC8BE4624ABD5C96
Session-ID-ctx:
Master-Key: <master key>
Key-Arg : None
Start Time: 1314020316
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
+OK Gpop ready for requests from <ip> 5pf3296003fak.3
USER <username>@gmail.com
+OK send PASS
PASS ******
+OK Welcome.
STAT
+OK 1 758
LIST
+OK 1 messages (758 bytes)
1 758
.
RETR 1
RENEGOTIATING
depth=1 /C=US/O=Google Inc/CN=Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
QUIT

Как видите на команду RETR 1 сервер отвечает ошибкой unable to get local issuer certificate.

В чем проблема? Подскажите плиз как исправить?

Спасибо!

>>unable to get local issuer certificate

укажи путь до корневых сертификатов
openssl s_client -connect pop.gmail.com:995 -CApath /root/CA/path/certs

в debian/ubuntu это /etc/ssl/certs

bass ★★★★★ ()

Спасибо!Насколько я понял, это сертификаты клиента в даном случае. По сути я могу использовать любой из них?

bitwise ()

Указал путь к сертификатам, теперь опять не работает:

RETR 1
RENEGOTIATING
depth=2 /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
verify return:1
depth=1 /C=US/O=Google Inc/CN=Google Internet Authority
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com
verify return:1

bitwise ()

На сколько я знаю, для публичных сервисов гугл не выдаёт клиентские (personal) сертификаты.

root CA это корневые сертификаты, одним из которых подписан текущий для данной сессии сертификат гугла.
-CApath указываешь где их искать
-CAfile указываешь конкретный root CA, но:
Сертификаты у гугла на всё множество доменов, и подписаны разными корневыми, на случай компрометации как сертификата, так и корня которым подписали, поэтому хранить гугл сертификаты локально не имеет смысла.

s_client не читает openssl.cnf и ему нельзя указать варианты доверия к сертификатам, потому если не хочешь возится с сертификатами, используй для получения почты готовые утилиты или напиши свой скрипт. Например запрос gmail perl|python даст кучу готовых решений

bass ★★★★★ ()
Ответ на: комментарий от bass

только в моем случаенеобходимо написать простой С++ клиент для загрузки почты, я все сделал но вылезла проблема с сертификатами. Если честно, я вообще не понимаю ее природу. Если можно, в двух словах как это должно работать, и если нужно я сгенирю сертификаты ключи чтобы забирать почту.

bitwise ()

>>s_client не читает openssl.cnf и ему нельзя указать варианты доверия к сертификатам

я ошибся, уровни доверия указывать можно

bass ★★★★★ ()
Ответ на: комментарий от bitwise

ну заставил таки перечитать ман.
суть такова, во время сессии ожидается ^R, как команда иницииации перепроверки ssl|tls подключения.
поэтому для приёма сообщения пиши команды маленькими буквами retr 1 или включай опцию -quiet
для подавления проверки с rootCA почитай man verify

bass ★★★★★ ()
Ответ на: комментарий от bass

Я проверил, все заработало! Огромное спасибо, я бы наверно долго еще голову ломал почему посреди сессии вдруг сертификат понадобился :))

bitwise ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.