Я настроил сервер ejabberd для StartTLS с сертификатами CA. Ниже приведена конфигурация:
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
starttls_required,
{certfile, "/etc/ejabberd/conf/ejabberd.pem"},
{max_stanza_size, 65536}
]},
Мой клиент XMPP был разработан в java с использованием библиотеки Smack. Я хочу, чтобы мой клиент XMPP работал с сервером, только если сертификат действителен. Но я не могу этого сделать. Ниже приведен код моего клиента 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);
Даже если я предоставлю фиктивный сертификат в хранилище доверенных сертификатов, он успешно установит соединение.
Я что-то пропустил?