【问题标题】:Smack 4.4.2 establish secure connection by certificatesSmack 4.4.2 通过证书建立安全连接
【发布时间】:2021-09-03 14:47:24
【问题描述】:

我有 3 个证书 root.crt,network.crt components.crt 必须与建立连接的请求一起发送。在 Smack 4.1.3 中,我使用了这个-


XMPPTCPConnectionConfiguration configuration = 
XMPPTCPConnectionConfiguration.builder()
                    .setServiceName("hostname")
                    .setHost("hostname")
                    .setCompressionEnabled(false)
                    .setPort(5222)
                    .setResource("Something")
                    .setSecurityMode(ConnectionConfiguration.SecurityMode.required)
                    .setUsernameAndPassword("somename","password")
                    .setCustomSSLContext(sslContext).build();
            AbstractXMPPConnection connection = new XMPPTCPConnection(configuration);
            connection.connect();
            connection.login();

It worked perfectly. Now I am using Smack 4.4.2 how do I make a connection? I am using this code below-             


         ```XMPPTCPConnectionConfiguration config = null;
            XMPPTCPConnectionConfiguration.Builder builder;
            try {
                builder = XMPPTCPConnectionConfiguration.builder()
                        .setServiceName(JidCreate.domainBareFrom(Important.getXmppHost()))
                        .setHost(Important.getXmppHost())
                       // .setDebuggerEnabled(true)
                        .setPort(Integer.parseInt(Important.getXmppPort()))
                        .setUsernameAndPassword(getLoginInfo("phone_no"), getLoginInfo("sec"))
                        .setSecurityMode(ConnectionConfiguration.SecurityMode.required)
                        .setResource(Important.getXmppResource())
                        .setCompressionEnabled(false);
                KeyStore keyStore = configKeyStore(builder);
                configSSLContext(builder, keyStore);
                config = builder.build();

            } catch (XmppStringprepException | KeyStoreException | KeyManagementException | NoSuchAlgorithmException e) {
                e.printStackTrace();
            }

private KeyStore configKeyStore(XMPPTCPConnectionConfiguration.Builder builder) throws KeyStoreException {
    KeyStore keyStore;

    builder.setKeystorePath(null);
    builder.setKeystoreType("AndroidCAStore");
    keyStore = KeyStore.getInstance("AndroidCAStore");
    return keyStore;
}

private void configSSLContext(XMPPTCPConnectionConfiguration.Builder builder, KeyStore keyStore) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
    TrustManagerFactory trustManagerFactory = TrustManagerFactory
            .getInstance(KeyManagerFactory.getDefaultAlgorithm());
    trustManagerFactory.init(keyStore);
    builder.setCustomSSLContext(sslContext);
}

由于不推荐使用 SetCustomSSLContext,服务器正在给我这个- error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

如何连接服务器?

【问题讨论】:

    标签: android xmpp smack


    【解决方案1】:

    我想出了解决这种情况的方法。 用过

    .setCustomX509TrustManager(trustfactory)
    

    解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2020-07-04
      • 2014-04-07
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多