Necesitaba mi script para enviar un correo electrónico al administrador si hubiera un problema, y la compañía solo usa Gmail. Siguiendo algunas instrucciones de publicaciones pude configurar mailx usando un archivo .mailrc. Primero estaba el error de nss-config-dir. Lo resolví copiando algunos archivos .db de un directorio de Firefox. a ./certs y apuntando a ello en mailrc. Un correo fue enviado.
Sin embargo, el error anterior apareció. Por algún milagro, había un certificado de Google en el .db. Apareció con este comando:
~]$ 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 ,,
Lo más probable es que se pueda ignorar, porque el correo funcionó de todos modos. Finalmente, después de tirar un poco de pelo y muchas gafas, descubrí cómo deshacerme de la molestia.
Primero, exporte el certificado existente a un archivo ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Ahora vuelva a importar ese archivo y márquelo como confiable para los certificados SSL, ala:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
Después de esto, el listado muestra que es confiable:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
Y mailx envía sin problemas.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Espero que sea útil para alguien que quiera terminar con el error.
Además, tengo curiosidad por algo.
¿Cómo podría obtener este certificado, si no estuviera en la base de datos de Mozilla por casualidad? ¿Hay, por ejemplo, algo como esto?
~]$ 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
para verlos a todos.Esta publicación debe actualizarse nuevamente. Estaba teniendo problemas con mi instalación de mailx en mi caja CentOS 7. El correo se enviaba pero aún recibía el mensaje "Error en la certificación: el emisor del certificado de igual no es reconocido". error.
Encontré la solución aquí , aunque tuve que traducirla.
Aquí hay una forma rápida de hacerlo:
Ahora copie cada certificado, incluido el - COMENZAR CERTIFICADO - y - ENVIAR CERTIFICADO - y péguelos en sus respectivos archivos que creó anteriormente (google, geotrust, equifax) y ahora guarde esos archivos.
Ahora tenemos que importar cada uno de estos certificados a la base de datos.
Salida de ejemplo:
Tiempo de limpieza (opcional)
Eso debería ser, no debería recibir el "Error en la certificación: el emisor del certificado de igual no es reconocido". error más!
Notas:
Es posible que hayas notado que cambié el directorio de
/certs
a~/.certs
. mailx se ejecuta como root, así que acabo de hacer estos cambios como root /. "~ /" significa que el directorio HOME lo pone todo junto~/.certs
significa/root/.certs/
. Estoy seguro de que lo sabías, pero ¡oye en caso de que nunca sepas quién podría estar leyendo esto!En caso de que necesite esto, aquí están las opciones de configuración que agregué al final de
/etc/mail.rc
Asegúrese de cambiar your.from.user, your.smtp.user y your.pass a sus respectivas variables.
fuente
-showcerts
da dos certificados, no 3. El segundo es GlobalSign. Aún así, este procedimiento es el único que funciona, por lo que +1: usar-showcerts
, encontrar todos los certificados en él (actualmente 2) e importarlos individualmente en la base de datos.openssl
comoecho -n | openssl
, o se cuelga esperando la entradaopenssl s_client </dev/null
. Sí, a partir de 2017 Google (incluido gmail) cambió de GIA2 en GeoTrust / Equifax a GIA3 en GlobalSign. Pero no es necesario almacenar todos los certificados de la cadena. Y si algún delincuente o impostor (como un gobierno entrometido) se hace pasar por Gmail, este método no solo confía en ellos, sino que lo hace permanentemente; otros usuarios pueden ser engañados temporalmente por un certificado emitido ilegítimamente, pero cuando se revoca, dejan de confiar en él, mientras que con esto El método continúa dando todo su correo electrónico a los malhechores.Creé un pequeño script, basado en las respuestas en este hilo, que automáticamente extraerá, analizará e instalará los certificados actuales de gmail smtp. Debería poder manejarlo si el número de certs cambia nuevamente.
Aquí hay un pastebin con resaltado de sintaxis también
fuente
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")}'