Ronda XT - CSM Center - Não é possível o envio de e-mails de alarme
Incidente
No Ronda XT, ao tentar enviar e-mails de alarme através do CSM Center, o envio não é concluído.
No log da CSM Center (ou server.log no Wildfly) é apresentada a seguinte mensagem:
[#|AAAA-MM-DDT14:10:06.434-0300|WARNING|sun-appserver2.1|com.senior.seguranca.csmcenter.calmsv.mainsv|_ThreadID=17;_ThreadName=p: thread-pool-1; w: 4;_RequestID=26a4d114-bfcd-4409-a200-a233d1b0f8bd;|Problemas no envio de e-mail: COLETOR DE MARCAÇÕES para email1@empresa.com.br;email2@empresa.com.br;
...
java.lang.RuntimeException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : mail.servidor.com.br:25
...
Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : mail.nomedoservidor.com.br:25
...
Caused by: javax.mail.MessagingException: Can't send command to SMTP host;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Causa
Esta mensagem é apresentada, pois o servidor de e-mail (SMTP) utiliza um certificado de segurança (SSL) que não é reconhecido como confiável pela JVM do CSM Center.
O arquivo de certificados padrão utilizado pelo Glassfish (o cacerts.jks, localizado em %DOMINIO_CSMCENTER%/config/) não possui o certificado raiz (RootCert.crt) do servidor de e-mail, impedindo a comunicação segura.
Solução
Para que a mensagem não seja apresentada e o CSM Center confie no certificado do servidor de e-mail, realize os passos a seguir:
1. Obtenha o arquivo do certificado raiz (ex: RootCert.crt) do seu servidor de e-mail (SMTP);
2. Abra um prompt de comando (CMD) como Administrador no servidor do CSM Center;
3. Navegue até a pasta bin do JDK (Java) utilizado pelo CSM Center; (Exemplo: ../Senior/CSMCenter/jdk/jre/bin)
4. Execute o comando keytoolabaixo para importar o certificado. (Ajuste os caminhosRootCert.crtecacerts conforme o seu ambiente):
keytool -import -alias serverCert -file C:\caminho_completo\RootCert.crt;
keystore C:\Senior\CSMCenter\glassfish\domains\csmcenter\config\cacerts;
5. Informe na senha changeit e pressione Enter;
6. Clique em sim ou yes para confirmar a mensagem: Confia neste certificado? [sim/não]: (ou Trust this certificate?), e pressione Enter;
7. Reinicie o serviço do CSM Center (Glassfish) para que a alteração tenha efeito.
Observação: Para localizar qual o JDK (Java) é utilizado pelo serviço CSM Center no Glassfish, acesse o arquivo asenv.bat (localizado em.../glassfish40/glassfish/config/) e verifique o caminho no campo set AS_JAVA.