Eu precisava do meu script para enviar um email para o administrador se houver algum problema, e a empresa usar apenas o Gmail. Seguindo algumas instruções, eu consegui configurar o mailx usando um arquivo .mailrc. primeiro houve o erro do nss-config-dir, resolvi isso copiando alguns arquivos .db de um diretório do firefox. para ./certs e com o objetivo em mailrc. Um email foi enviado.
No entanto, o erro acima surgiu. Por algum milagre, havia um certificado do Google no .db. Ele apareceu com 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 ,,
Provavelmente, isso pode ser ignorado, porque o email funcionou de qualquer maneira. Finalmente, depois de puxar um pouco de cabelo e de muitos óculos, descobri como me livrar do aborrecimento.
Primeiro, exporte o certificado existente para um arquivo ASSCII:
~]$ certutil -L -n 'Google Internet Authority' -d certs -a > google.cert.asc
Agora reimporte esse arquivo e marque-o como confiável para certificados SSL, ala:
~]$ certutil -A -t "C,," -n 'Google Internet Authority' -d certs -i google.cert.asc
Depois disso, a listagem mostra que é confiável:
~]$ certutil -L -d certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
...
Google Internet Authority C,,
E o mailx envia sem problemas.
~]$ /bin/mailx -A gmail -s "Whadda ya no" somebody@acompany.com
ho ho ho
EOT
~]$
Espero que seja útil para alguém que deseja concluir o erro.
Além disso, estou curioso sobre algumas coisas.
Como eu poderia obter esse certificado, se não estivesse no banco de dados do mozilla por acaso? Existe, por exemplo, algo assim?
~]$ 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 vê-los todos.Esta postagem precisa ser atualizada novamente. Eu estava tendo problemas com a instalação do mailx na minha caixa do CentOS 7. O correio seria enviado, mas eu ainda estava recebendo o "Erro na certificação: o emissor do certificado do par não é reconhecido". erro.
Eu encontrei a solução aqui , tive que traduzi-lo embora.
Aqui está uma maneira rápida de fazer isso:
Agora copie cada certificado, incluindo o --BEGIN CERTIFICATE-- e --END CERTIFICATE-- e cole-os nos respectivos arquivos que você criou anteriormente (google, geotrust, equifax) e salve esses arquivos.
Agora temos que importar cada um desses certificados para o banco de dados.
Exemplo de saída:
Tempo de limpeza (opcional)
Nesse caso, você não deve receber o "Erro no certificado: o emissor do certificado do par não é reconhecido". erro mais!
Notas:
Você deve ter notado que eu mudei o dir de
/certs
para~/.certs
. mailx é executado como root, então eu apenas fiz essas alterações como root /. "~ /" Significa PRINCIPAL diretório juntar tudo~/.certs
meio/root/.certs/
. Tenho certeza que você sabia disso, mas ei, apenas no caso de você nunca saber quem pode estar lendo isso!Caso você precise, aqui estão as opções de configuração que adicionei na parte inferior do
/etc/mail.rc
Certifique-se de alterar your.from.user, your.smtp.user e your.pass para as respectivas variáveis.
fonte
-showcerts
fornece dois certificados, não 3. O segundo é um GlobalSign. Ainda assim, esse procedimento é o único que funciona, então +1: use-showcerts
, encontre todos os certificados nele (atualmente 2) e importe-os individualmente para o banco de dados.openssl
comoecho -n | openssl
, ou trava, aguardando entradaopenssl s_client </dev/null
. Sim, a partir de 2017, o Google (incluindo o gmail) passou do GIA2 sob GeoTrust / Equifax para GIA3 sob GlobalSign. Mas não há necessidade de armazenar todos os materiais da cadeia. E se qualquer criminoso ou impostor (como um governo intrometido) se passar pelo Gmail, esse método não apenas confia neles, mas o faz permanentemente - outros usuários podem ser temporariamente enganados por um certificado emitido de forma ilegítima, mas quando são revogados, eles deixam de confiar nele. Como você continua a enviar todo o seu email para os malfeitores.Criei um pequeno script, com base nas respostas deste tópico, que automaticamente extrairá, analisará e instalará os certificados smtp atuais do gmail. Deve ser capaz de lidar com isso se o número de certificados mudar novamente.
Aqui está um pastebin com destaque de sintaxe também
fonte
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")}'