smack使用TSL连接openfire

本文介绍了如何利用Smack库通过TLS加密协议连接到Openfire服务器,包括纯文本、STARTTLS以及TLS/SSL三种连接方式,重点讨论了在支持加密的情况下如何从非加密传输升级至加密传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接openfire服务器有三种方式

纯文本

starttls

tls/ssl

第二种是纯文本的扩展协议,如果双方都支持加密,则可将纯文本传输升级为加密传输,加密传输和非加密

传输公用一个端口

public XMPPConnectionFactory(@Value("${im.host}") String host,@Value("${truststore.pwd}") String storePass){
        Base64.setEncoder(new BASE64Encoder());
        try {
            KeyStore trustStore=KeyStore.getInstance("JKS");
            trustStore.load(getClass().getResourceAsStream("/truststore"),storePass.toCharArray());
            TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
            tmf.init(trustStore);
            SSLContext sslContext=SSLContext.getInstance("TLS");
            sslContext.init(null,tmf.getTrustManagers(),null);
            SmackConfiguration.DEBUG = true;
            //使用加密连接
            config = XMPPTCPConnectionConfiguration.builder()
                    .setHost(host)
                    .setPort(5223)
                    .setSocketFactory(sslContext.getSocketFactory())
                    .setServiceName(host)
                    .setResource("mall")
                    .build();
            //使用STARTTLS连接
//            config = XMPPTCPConnectionConfiguration.builder()
//                    .setHost(host)
//                    .setPort(5222)
//                    .setCustomSSLContext(sslContext)
//                    .setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible)
//                    .setServiceName(host)
//                    .setResource("mall")
//                    .build();
            //使用纯文本
//            config = XMPPTCPConnectionConfiguration.builder()
//                    .setHost(host)
//                    .setPort(5222)
//                    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
//                    .setServiceName(host)
//                    .setResource("mall")
//                    .build();
        } catch (KeyStoreException|KeyManagementException|CertificateException|NoSuchAlgorithmException|IOException e) {
            logger.error("",e);
        }
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值