Ich brauchte mein Skript, um dem Administrator eine E-Mail zu senden, wenn ein Problem auftritt, und das Unternehmen verwendet nur Google Mail. Nach ein paar Anweisungen konnte ich mailx mithilfe einer .mailrc-Datei einrichten. Es gab zuerst den Fehler von nss-config-dir, den ich durch Kopieren einiger .db-Dateien aus einem Firefox-Verzeichnis behoben habe. zu ./certs und darauf zielen in mailrc. Eine Mail wurde gesendet.
Der obige Fehler trat jedoch auf. Wie durch ein Wunder gab es ein Google-Zertifikat in der .db. Es zeigte sich mit diesem Befehl:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
GeoTrust SSL CA ,,
VeriSign Class 3 Secure Server CA - G3 ,,
Microsoft Internet Authority ,,
VeriSign Class 3 Extended Validation SSL CA ,,
Akamai Subordinate CA 3 ,,
MSIT Machine Auth CA 2 ,,
Google Internet Authority ,,
Höchstwahrscheinlich kann es ignoriert werden, da die Mail trotzdem funktioniert hat. Nachdem ich ein paar Haare und viele Brillen gezogen hatte, fand ich schließlich heraus, wie ich mich von dem Ärger befreien konnte.
Exportieren Sie zunächst das vorhandene Zertifikat in eine ASSCII-Datei:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Importieren Sie diese Datei nun erneut und markieren Sie sie als vertrauenswürdig für SSL-Zertifikate.
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
Danach zeigt die Auflistung, dass es vertrauenswürdig ist:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
Und mailx verschickt ohne Probleme.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Ich hoffe, es ist hilfreich für jemanden, der mit dem Fehler fertig werden möchte.
Ich bin auch neugierig auf etwas.
Wie könnte ich dieses Zertifikat erhalten, wenn es nicht zufällig in der Mozilla-Datenbank wäre? Gibt es zum Beispiel so etwas?
~]$ certutil -A -t "C,," \
-n 'gmail.com' \
-d certs \
-i 'http://google.com/cert/this...'
openssl s_client -showcerts -connect smtp.gmail.com:465 </dev/null
um sie alle zu sehen.Dieser Beitrag muss erneut aktualisiert werden. Ich hatte Probleme mit meiner Mailx-Installation auf meiner CentOS 7-Box. Die E-Mail wurde gesendet, aber ich erhielt immer noch den Fehler "Fehler bei der Zertifizierung: Der Aussteller des Peer-Zertifikats wird nicht erkannt." Error.
Ich habe die Lösung hier gefunden , musste sie aber übersetzen.
Hier ist ein schneller Weg, dies zu tun:
Kopieren Sie nun jedes Zertifikat einschließlich des --BEGIN CERTIFICATE-- und --END CERTIFICATE-- und fügen Sie sie in die zuvor erstellten Dateien (Google, Geotrust, Equifax) ein. Speichern Sie nun diese Dateien.
Jetzt müssen wir jedes dieser Zertifikate in die Datenbank importieren.
Beispielausgabe:
Reinigungszeit (optional)
Das sollte es sein, Sie sollten nicht den "Fehler in zertifiziert: Peer's Zertifikataussteller wird nicht erkannt" erhalten. Fehler nicht mehr!
Anmerkungen:
Sie haben vielleicht bemerkt, dass ich das Verzeichnis von
/certs
auf geändert habe~/.certs
. mailx läuft als root, also habe ich diese Änderungen nur als root / vorgenommen. "~ /" bedeutet, dass das HOME-Verzeichnis alles zusammen~/.certs
bedeutet/root/.certs/
. Ich bin mir sicher, dass Sie das gewusst haben, aber hey, nur für den Fall, dass Sie nie wissen, wer das lesen könnte!Für den Fall, dass Sie dies benötigen, finden Sie hier die Konfigurationsoptionen, die ich unten hinzugefügt habe
/etc/mail.rc
Stellen Sie sicher, dass Sie your.from.user, your.smtp.user und your.pass in die entsprechenden Variablen ändern.
quelle
-showcerts
gibt zwei Zertifikate, nicht 3. Das zweite ist ein GlobalSign-Zertifikat. Dieses Verfahren ist jedoch das einzige, das funktioniert. Verwenden Sie also +1: Verwenden-showcerts
Sie alle darin enthaltenen Zertifikate (derzeit 2) und importieren Sie sie einzeln in die Datenbank.openssl
wieecho -n | openssl
, ot es hängt und wartet auf Eingabeopenssl s_client </dev/null
. Ja, ab 2017 hat Google (einschließlich Google Mail) unter GeoTrust / Equifax von GIA2 unter GlobalSign auf GIA3 umgestellt. Es ist jedoch nicht erforderlich, alle Zertifikate der Kette aufzubewahren. Und wenn ein Krimineller oder Betrüger (wie eine neugierige Regierung) sich als Google Mail ausgibt, vertraut diese Methode ihnen nicht nur, sondern dauerhaft - andere Benutzer werden möglicherweise vorübergehend von einem rechtswidrig ausgestellten Zertifikat getäuscht, aber wenn es widerrufen wird, hören sie auf, ihm zu vertrauen Methode geben Sie weiterhin alle Ihre E-Mails an Übeltäter.Ich habe basierend auf den Antworten in diesem Thread ein kleines Skript erstellt, das die aktuellen Google Mail-SMTP-Zertifikate automatisch abruft, analysiert und installiert. Es sollte in der Lage sein, damit umzugehen, wenn sich die Anzahl der Zertifikate erneut ändert.
Hier ist auch ein Pastebin mit Syntaxhervorhebung
quelle
openssl s_client </dev/null -showcerts -connect ... | awk '/^ i:/{n=substr($0,7)} /-BEGIN/,/-END/{print>"t"} /-END/{close("t"); system("certutil -A -n \"" n "\" -t TC,, -i t -d certdir || echo failed; rm t")}'