我在这里很新,但我想与大家分享我的问题并找到解决方案。
也许这可以帮助某人并节省时间。
我选择了 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!)
经过简短的测试和 .fetchmailrc 配置更改(例如添加)后,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!)
现在我已经看到我的本地设备上可能存在一些根 ca 和中间 ca 以及服务器证书问题。
现在你必须现在我运行 debian 拉伸。
是的,它很旧而且有点过时,这可能是问题所在,
我不再调查。因此,我开始对和 google ca 证书
进行更多研究。imap.gmail.com
当我运行fetchmail -v
for verbose 命令时,我看到谷歌告诉我,
他们想要进行TLS1.3
协议通信。
您还可以通过运行 openssl 连接检查来看到这一点。openssl s_client -showcerts -connect imap.gmail.com:993
所以,我知道 TLS1.2 现在还没有过时,只有在 TLS1.1 之前的所有其他旧协议都被弃用了。
我的 debian stretch fetchmail 也不支持 TLS1.3,这就是为什么我稍后只配置 TLS1.2。
现在我在互联网上搜索了谷歌 pki 证书。所有 Google pki 证书都可以在这里找到Google PKI
现在是我的解决方案。
在我的主目录中创建一个新的 .certs 文件夹
mkdir ~/.certs
mkdir ~/.certs/google
cd ~/.certs/google
通过 openssl connect 获取 imap.gmail.com 证书。
cd ~/.certs
openssl s_client -showcerts -connect imap2.gmail.com:993 -servername imap.gmail.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > imap.gmail.com.pem
通过 wget 下载 google pki 证书
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 目录
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 运行 openssl 的 c_rehash 以将其用于 fetchmail
c_rehash .
nano .fetchmailrc
像这样在 ~/.fetchmailrc 配置中插入以下行是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