fetchmail предупреждает о сертификате сервера imap.gmail.com - PullRequest
1 голос
/ 13 марта 2020

Я здесь новичок, но хочу поделиться своей проблемой и найти решение для всех.
Может быть, это кому-то поможет и сэкономит время.
Я выбрал stackoverflow, потому что я часто находил здесь решение для мои проблемы

Проблема: fetchmail запрашивает некоторые предупреждения для сертификата imap.gmail.com и может больше не получать мои письма

Начальной точкой было некоторое предупреждение fetchmail, как показано ниже

fetchmail: Fehler bei Server-Zertifikat-Überprüfung: self signed certificate
fetchmail: Fehlendes Zertifikat als Vertrauensquelle: /OU=No SNI provided; please fix your client./CN=invalid2.invalid
fetchmail: Das kann bedeuten, dass das Wurzelzertifikat nicht unter den vertrauenswürdigen CA-Zertifikaten ist, oder dass c_rehash auf dem Verzeichnis ausgeführt werden muss. Details sind in der fetchmail-Handbuchseite im bei --sslcertpath beschrieben.
fetchmail: Warnung: Die Verbindung ist unsicher, mache trotzdem weiter. (Nehmen Sie lieber --sslcertck!)

После краткий тест и .fetchmailr c изменение конфигурации, например добавление sslproto tls1.2 я получил это предупреждение

fetchmail: Fehler bei Server-Zertifikat-Überprüfung: unable to get local issuer certificate
fetchmail: Unterbrochene Zertifizierungskette bei: /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
fetchmail: Dies kann bedeuten, dass der Server das/die Zertifikat(e) der Zwischenzertifizierungsstellen nicht mitlieferte. Daran kann fetchmail nichts ändern.  Für weitere Information, siehe das mit Fetchmail ausgelieferte Dokument README.SSL-SERVER.
fetchmail: Das kann bedeuten, dass das Wurzelzertifikat nicht unter den vertrauenswürdigen CA-Zertifikaten ist, oder dass c_rehash auf dem Verzeichnis ausgeführt werden muss. Details sind in der fetchmail-Handbuchseite im bei --sslcertpath beschrieben.
fetchmail: Warnung: Die Verbindung ist unsicher, mache trotzdem weiter. (Nehmen Sie lieber --sslcertck!)

Теперь я увидел, что могут быть некоторые root CA и промежуточные CA и проблема с сертификатом сервера на мое локальное устройство.
Теперь вы должны теперь, когда я запускаю debian stretch.
Да, он старый стабильный и немного устарел, и это может быть проблемой,
, которую я больше не исследовал.
Так что я начал немного больше исследований, касающихся imap.gmail.com и google ca certs. Когда я запускаю fetchmail -v для подробной команды, я вижу, что Google говорит мне,
они хотят иметь TLS1.3 протокол связи.
Вы также можете увидеть это, выполнив проверку соединения openssl openssl s_client -showcerts -connect imap.gmail.com:993
Итак, я знаю, что TLS1.2 сейчас не устарел, и только все другие старые протоколы до TLS1.1 устарели.
Мой debian stretch fetchmail также не поддерживает TLS1.3, поэтому я позже настраиваю только TLS1.2.

Теперь я искал сертификаты gki pki в inte rnet. Все сертификаты Google pki можно найти здесь Google PKI

Теперь пришло мое решение.

создайте новую папку .certs в моем домашнем каталоге

mkdir ~/.certs
mkdir ~/.certs/google
cd ~/.certs/google

получите сертификат imap.gmail.com через openssl connect.

cd ~/.certs
openssl s_client -showcerts -connect imap2.gamil.com:993 -servername imap.gmail.com  </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > imap.gmail.com.pem

загрузите google pki certs через wget

cd ~/.certs/google
wget https://pki.goog/gtsr1/GTSR1.crt
wget https://pki.goog/gtsr2/GTSR2.crt
wget https://pki.goog/gtsr3/GTSR3.crt
wget https://pki.goog/gtsr4/GTSR4.crt
wget https://pki.goog/gsr2/GSR2.crt
wget https://pki.goog/gsr4/GSR4.crt
wget https://pki.goog/gtsr1/gtsy1.crt
wget https://pki.goog/gtsr2/gtsy2.crt
wget https://pki.goog/gtsr3/gtsy3.crt
wget https://pki.goog/gtsr4/gtsy4.crt
wget https://pki.goog/gsr2/GTS1O1.crt
wget https://pki.goog/gsr2/GTS1D2.crt
wget https://pki.goog/gsr2/giag4.crt
wget https://pki.goog/gsr4/giag4ecc.crt
wget https://pki.goog/digicert/GoogleCA1.crt
wget https://pki.goog/digicert/GTSCA1D3.crt

Затем преобразуйте все * .crt в формат * .pem и скопируйте его в certs dir

for i in *.crt; do openssl x509 -inform DER -in $i -text </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $i.pem ; done

for i in *.pem; do cp $i ~/.certs/. ; done

Afterwords запускает c_reha sh из openssl, чтобы использовать его для fetchmail

c_rehash .
nano .fetchmailrc

вставить следующие строки в конфигурацию ~ / .fetchmailr c, вот такие вот ssl, sslcertpath и sslproto Строка важных изменений.

poll imap.gmail.com
  protocol IMAP
  user 'xxxx'
  is username
  pass 'xxxxx'
  folder INBOX
  ssl
  sslcertpath /home/<username>/.certs/
  sslproto tls1.2
  mda '/usr/bin/procmail -f %F -d %T'

теперь перезапустите вашу fetchmail (возможно, в подробном режиме), чтобы проверить, нет ли предупреждений сейчас. fetchmail -v

...