Problema na conexão com o servidor XMPP configurado pelo StartTLS
Pergunta
Configurei o servidor ejabberd para StartTLS com certificados CA.Abaixo está a configuração:
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
starttls_required,
{certfile, "/etc/ejabberd/conf/ejabberd.pem"},
{max_stanza_size, 65536}
]},
Meu cliente XMPP foi desenvolvido em java usando a biblioteca Smack.Quero que meu cliente XMPP funcione com o servidor somente se o certificado for válido.Mas não sou capaz de fazer isso.Abaixo está meu código de cliente XMPP
ConnectionConfiguration config = new ConnectionConfiguration(host, port, serviceName);
config.setSASLAuthenticationEnabled(true);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
config.setCompressionEnabled(true);
config.setTruststorePath(trustStorePath);
config.setTruststorePassword(trustStorePwd);
config.setExpiredCertificatesCheckEnabled(true);
config.setNotMatchingDomainCheckEnabled(true);
config.setVerifyChainEnabled(true);
Mesmo se eu fornecer um certificado fictício no armazenamento confiável, ele fará a conexão com êxito.
Eu perdi alguma coisa?
Solução
Tentar
config.setVerifyRootCAEnabled(true);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow