J'avais besoin de mon script pour envoyer un e-mail à l'administrateur en cas de problème, et la société utilise uniquement Gmail. Après quelques instructions de publication, j'ai pu configurer mailx à l'aide d'un fichier .mailrc. il y avait d'abord l'erreur de nss-config-dir J'ai résolu cela en copiant certains fichiers .db à partir d'un répertoire firefox. à ./certs et le viser dans mailrc. Un mail a été envoyé.
Cependant, l'erreur ci-dessus s'est produite. Par miracle, il y avait un certificat Google dans le .db. Il est apparu avec cette commande:
~]$ 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 ,,
Très probablement, il peut être ignoré, car le courrier a quand même fonctionné. Enfin, après avoir tiré quelques cheveux et de nombreux googles, j'ai découvert comment me débarrasser de la gêne.
Tout d'abord, exportez le certificat existant vers un fichier ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Maintenant, réimportez ce fichier et marquez-le comme approuvé pour les certificats SSL, ala:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
Après cela, la liste montre qu'il fait confiance:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
Et mailx envoie sans accroc.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
J'espère que cela sera utile à quelqu'un qui cherche à en finir avec l'erreur.
Aussi, je suis curieux de savoir quelque chose.
Comment pourrais-je obtenir ce certificat, s'il n'était pas dans la base de données mozilla par hasard? Y a-t-il par exemple quelque chose comme ça?
~]$ 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
pour les voir tous.Ce message doit être mis à jour à nouveau. J'avais des problèmes avec mon installation mailx sur ma box CentOS 7. Le courrier serait envoyé mais je recevais toujours le message d'erreur "Erreur de certification: l'émetteur du certificat de l'homologue n'est pas reconnu". Erreur.
J'ai trouvé la solution ici , mais je devais la traduire.
Voici un moyen rapide de le faire:
Copiez maintenant chaque certificat, y compris les certificats --BEGIN CERTIFICATE-- et --END CERTIFICATE-- et collez-les dans leurs fichiers respectifs que vous avez créés précédemment (google, geotrust, equifax) et enregistrez maintenant ces fichiers.
Maintenant, nous devons importer chacun de ces certificats dans la base de données.
Exemple de sortie:
Temps de nettoyage (facultatif)
Cela devrait être ça, vous ne devriez pas recevoir le "Erreur de certification: l'émetteur du certificat de l'homologue n'est pas reconnu." erreur plus!
Remarques:
Vous avez peut-être remarqué que j'ai changé le dir de
/certs
en~/.certs
. mailx s'exécute en tant que root, donc je viens de faire ces changements en tant que root /. "~ /" signifie que le répertoire HOME met tous les~/.certs
moyens ensemble/root/.certs/
. Je suis sûr que vous le saviez, mais au cas où vous ne savez jamais qui pourrait lire ceci!Juste au cas où vous en auriez besoin, voici les options de configuration que j'ai ajoutées au bas de
/etc/mail.rc
Assurez-vous de changer votre.from.user, votre.smtp.user et votre.pass à leurs variables respectives.
la source
-showcerts
donne deux certificats, pas 3. Le second est un GlobalSign. Néanmoins, cette procédure est la seule qui fonctionne, alors +1: utilisez-showcerts
, recherchez tous les certificats (actuellement 2) et importez-les individuellement dans la base de données.openssl
commeecho -n | openssl
, ou il se bloque en attendant l'entréeopenssl s_client </dev/null
. Oui, depuis 2017, Google (y compris gmail) est passé de GIA2 sous GeoTrust / Equifax à GIA3 sous GlobalSign. Mais il n'est pas nécessaire de stocker tous les certificats de la chaîne. Et si un criminel ou un imposteur (comme un gouvernement fouineur) usurpe l'identité de Gmail, cette méthode non seulement leur fait confiance mais le fait de manière permanente - d'autres utilisateurs peuvent être temporairement trompés par un certificat délivré de manière illégitime, mais lorsqu'il est révoqué, ils cessent de lui faire confiance alors qu'avec cela vous continuez de donner tous vos e-mails aux malfaiteurs.J'ai créé un petit script, basé sur les réponses de ce fil, qui va automatiquement extraire, analyser et installer les certificats smtp gmail actuels. Il devrait pouvoir le gérer si le nombre de certificats change à nouveau.
Voici une boîte à pâte avec mise en évidence de la syntaxe également
la source
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")}'