Potrzebowałem skryptu, aby wysłać e-maila do administratora, jeśli występuje problem, a firma korzysta tylko z Gmaila. Postępując zgodnie z instrukcjami dotyczącymi kilku postów, mogłem skonfigurować mailx przy użyciu pliku .mailrc. najpierw pojawił się błąd nss-config-dir Rozwiązałem to, kopiując niektóre pliki .db z katalogu Firefox. do ./certs i celowanie w mailrc. Wiadomość została wysłana.
Jednak pojawił się powyższy błąd. Jakimś cudem w pliku .db był certyfikat Google. Pojawiło się z tym poleceniem:
~]$ 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 ,,
Najprawdopodobniej można to zignorować, ponieważ poczta i tak działała. Wreszcie po wyciągnięciu włosów i wielu googli dowiedziałem się, jak pozbyć się irytacji.
Najpierw wyeksportuj istniejący certyfikat do pliku ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Teraz ponownie zaimportuj ten plik i oznacz go jako zaufany dla certyfikatów SSL, między innymi:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
Następnie lista pokazuje, że jest zaufany:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
A mailx wysyła bez żadnych problemów.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Mam nadzieję, że jest to pomocne dla kogoś, kto chce naprawić błąd.
Ciekawe też coś.
Jak mogę uzyskać ten certyfikat, jeśli przypadkowo nie byłby w bazie danych Mozilli? Czy jest na przykład coś takiego?
~]$ 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
aby zobaczyć je wszystkie.Ten post musi zostać ponownie zaktualizowany. Miałem problem z instalacją mailx na moim komputerze CentOS 7. Wiadomość e-mail zostanie wysłana, ale nadal pojawia się komunikat „Błąd certyfikatu: wystawca certyfikatu partnera nie jest rozpoznawany”. błąd.
Znalazłem tutaj rozwiązanie , musiałem je jednak przetłumaczyć.
Oto szybki sposób, aby to zrobić:
Teraz skopiuj każdy certyfikat, w tym - POCZĄTEK CERTYFIKAT - i - POTWIERDŹ CERTYFIKAT - i wklej je do odpowiednich plików, które wcześniej utworzyłeś (google, geotrust, equifax), a teraz zapisz te pliki.
Teraz musimy zaimportować każdy z tych certyfikatów do bazy danych.
Przykładowe dane wyjściowe:
Czas czyszczenia (opcjonalnie)
Tak powinno być, nie powinieneś otrzymywać komunikatu „Błąd w certyfikacie: wystawca certyfikatu partnera nie jest rozpoznawany”. błąd już więcej!
Uwagi:
Być może zauważyłeś, że zmieniłem katalog z
/certs
na~/.certs
. mailx działa jako root, więc właśnie wprowadziłem te zmiany jako root /. „~ /” Oznacza katalog domowy je połączyć~/.certs
środki/root/.certs/
. Jestem pewien, że o tym wiedziałeś, ale hej, na wypadek, gdybyś nigdy nie wiedział, kto to czyta!Na wypadek, gdybyś tego potrzebował, oto opcje konfiguracji, które dodałem na dole
/etc/mail.rc
Upewnij się, że zmieniłeś twój.fr.user, twój.smtp.user i twój.pass na odpowiednie zmienne.
źródło
-showcerts
daje dwa certyfikaty, a nie 3. Drugi to GlobalSign. Jednak ta procedura jest jedyną, która działa, więc +1: użyj-showcerts
, znajdź wszystkie certyfikaty (obecnie 2) i zaimportuj je indywidualnie do bazy danych.openssl
jakoecho -n | openssl
, ot zawiesza się czekając na dane wejścioweopenssl s_client </dev/null
. Tak, od 2017 r. Google (w tym Gmail) przeszedł z GIA2 pod GeoTrust / Equifax na GIA3 pod GlobalSign. Ale nie ma potrzeby przechowywania wszystkich certyfikatów łańcucha. A jeśli jakikolwiek przestępca lub oszust (jak wścibski rząd) podszywa się pod Gmaila, ta metoda nie tylko im ufa, ale czyni to na stałe - inni użytkownicy mogą zostać tymczasowo oszukani przez nielegalnie wydany certyfikat, ale gdy zostanie odwołany, przestaną mu ufać, podczas gdy dzięki temu metodą, którą nadal przekazujesz wszystkim swoim e-mailom złoczyńcom.Stworzyłem mały skrypt oparty na odpowiedziach w tym wątku, który automatycznie pobierze, parsuje i instaluje bieżące certyfikaty smtp gmail. Powinien być w stanie sobie z tym poradzić, jeśli ponownie zmieni się liczba certyfikatów.
Oto pastebin z podświetlaniem składni
źródło
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")}'