Мне нужен был мой скрипт, чтобы написать администратору в случае возникновения проблемы, и компания использует только Gmail. Следуя нескольким инструкциям, я смог настроить mailx с помощью файла .mailrc. Сначала была ошибка nss-config-dir. Я решил это, скопировав некоторые файлы .db из каталога Firefox. к ./certs и нацеливаясь на него в mailrc. Письмо было отправлено.
Однако вышеприведенная ошибка возникла. Каким-то чудом был сертификат Google в .db. Это обнаружилось с этой командой:
~]$ 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 ,,
Скорее всего, это можно игнорировать, потому что почта все равно работала. Наконец, потянув за волосы и много гугля, я узнал, как избавиться от раздражения.
Сначала экспортируйте существующий сертификат в файл ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Теперь повторно импортируйте этот файл и пометьте его как доверенный для SSL-сертификатов, ala:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
После этого, список показывает, что он доверяет:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
И mailx отправляет без помех.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Я надеюсь, что это будет полезно для тех, кто хочет покончить с ошибкой.
Кроме того, мне интересно кое-что.
Как я могу получить этот сертификат, если его нет в базе данных Mozilla случайно? Есть ли, например, что-то подобное?
~]$ 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
чтобы просмотреть их все.Этот пост необходимо обновить еще раз. У меня были проблемы с моей установкой mailx на мой CentOS 7 ящик. Почта отправила бы, но я все еще получал "Ошибка в заверенном: издатель сертификата Peer не распознан" ошибка.
Я нашел решение здесь , хотя пришлось его перевести.
Вот быстрый способ сделать это:
Теперь скопируйте каждый сертификат, включая --BEGIN CERTIFICATE-- и --END CERTIFICATE--, и вставьте их в соответствующие файлы, созданные вами ранее (google, geotrust, equifax), и теперь сохраните эти файлы.
Теперь мы должны импортировать каждый из этих сертификатов в БД.
Пример вывода:
Время уборки (опционально)
Это должно быть так, вы не должны получать «Ошибка в сертифицированном: издатель сертификата партнера не распознан». ошибка больше!
Заметки:
Вы могли заметить, что я изменил каталог с
/certs
на~/.certs
. mailx запускается от имени пользователя root, поэтому я внес эти изменения от имени пользователя root /. «~ /» означает, что каталог «HOME» все это~/.certs
означает/root/.certs/
. Я уверен, что вы знали это, но на всякий случай вы никогда не знаете, кто это читает!На тот случай, если вам это нужно, вот параметры конфигурации, которые я добавил внизу
/etc/mail.rc
Обязательно измените your.from.user, your.smtp.user и your.pass на их соответствующие переменные.
источник
-showcerts
выдает два сертификата, а не 3. Второй - GlobalSign. Тем не менее, эта процедура является единственной, которая работает, поэтому +1: используйте-showcerts
, найдите все сертификаты в ней (в настоящее время 2) и по отдельности импортируйте их в базу данных.openssl
какecho -n | openssl
, не зависает в ожидании вводаopenssl s_client </dev/null
. Да, с 2017 года Google (включая gmail) перешел с GIA2 в GeoTrust / Equifax на GIA3 в GlobalSign. Но нет необходимости хранить все сертификаты цепочки. И если какой-либо преступник или самозванец (например, любопытное правительство) выдает себя за gmail, этот метод не только доверяет им, но и делает это навсегда - другие пользователи могут быть временно одурачены незаконно выданным сертификатом, но при его отзыве они перестают доверять ему, тогда как с этим Метод, которым вы продолжаете отдавать всю свою электронную почту злодеям.Я создал небольшой сценарий, основанный на ответах в этой теме, который будет автоматически извлекать, анализировать и устанавливать текущие сертификаты SMTP для Gmail. Он должен быть в состоянии справиться с этим, если количество сертификатов снова изменится.
Вот пастбина с подсветкой синтаксиса, а также
источник
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")}'