Como certificar um servidor de e-mail imap auto-assinado

3

Minha tarefa é recuperar e-mails de um servidor de e-mail do imaps usando Java, assim como um cliente Eu preciso autenticar o servidor de e-mail usando um certificado apropriado. No entanto, parece que esse servidor de e-mail está usando um certificado autoassinado que não é incluído no armazenamento confiável (?) Por padrão. Pelo que encontrei aqui , as propriedades do sistema javax.net.ssl.trustStore e javax.net.ssl.trustStorePassword precisam ser definido. O exemplo é dado:

System.setProperty("javax.net.ssl.trustStore","clientTrustStore.key");
System.setProperty("javax.net.ssl.trustStorePassword","qwerty");

Minha pergunta é como obtenho este clientTrustStore.key e a senha relacionada? Isso é algo que eu posso gerar porque conheço os detalhes do servidor de e-mail ou é algo que deve ser fornecido pelo departamento de TI que mantém esse servidor de e-mail?

    
por Eugene S 17.05.2017 / 04:47

2 respostas

5

A senha do armazenamento confiável não é necessária para ler o armazenamento confiável.

Você precisará criar um armazenamento confiável que geralmente é feito com o utilitário keytool . Você precisará obter o certificado público do servidor IMAPS, o que pode ser feito de várias maneiras. O pacote openssl possui várias ferramentas que permitem salvar o certificado. Muitos utilitários de correio, como o Thunderbird, permitem exportar o certificado. Você deve conseguir obter o certificado ativando a depuração de SSL e conectando-se a uma classe simples. Depois de obter esse certificado, importe-o para um novo keystore usando o utilitário keytool .

Se você estiver em uma rede segura, basta definir a propriedade -Dtrust_all_cert=true e ignorar o problema do truststore. Isso deixa você vulnerável a ataques man-in-the-middle. No entanto, é uma solução pragmática para certificados auto-assinados, se for uma recuperação única. Você também pode fazer isso no seu código.

Há questões relacionadas que apontam na direção certa:

link link

    
por 17.05.2017 / 06:59
3

Você precisa obter o certificado do servidor público (do administrador do servidor ou, por exemplo, com openssl s_client -starttls imap -connect imap-server:143 ) e usar o utilitário java keytool para criar seu próprio truststore, no qual você pode adicionar esse certificado e enviar esse keystore com seu código.

Caso o certificado do servidor seja assinado por uma CA (interna) em vez de um certificado do servidor assinado automaticamente, adicione os certificados da autoridade de certificação (por exemplo, com openssl s_client -starttls imap -showcerts -connect imap-server:143 ) ao seu armazenamento confiável

    
por 17.05.2017 / 06:50