Как обрабатывать сертификат TLS с использованием библиотеки Smack XMPP в Java - PullRequest
3 голосов
/ 19 апреля 2011

Привет всем. Я только начал немного играть с XMPP в Java, как на стороне сервера, так и на стороне клиента. На стороне сервера я использую Apache Vysper 0.7, а на стороне клиента я использую Ignite Smack 3.1.0 Я использую небольшой XMPP-сервер со демонстрационной страницы apache vysper, используя сертификат TLS, который поставляется с исходным кодом:

    XMPPServer server = new XMPPServer("localhost");  

    StorageProviderRegistry providerRegistry = new MemoryStorageProviderRegistry();  

    AccountManagement accountManagement = (AccountManagement) providerRegistry.retrieve(AccountManagement.class);  

    Entity user = EntityImpl.parseUnchecked("user@localhost");  
    accountManagement.addUser(user, "password");

    server.setStorageProviderRegistry(providerRegistry);  

    server.addEndpoint(new TCPEndpoint());  

    server.setTLSCertificateInfo(new File("bogus_mina_tls.cert"), "boguspw");  

    server.start();  
    System.out.println("Vysper server is running...");

Проблема в том, что это неверный / действительный сертификат. Если я тестирую свой сервер с помощью pidgin, появляется окно с предупреждением, сообщающее, что сертификат недействителен, и кнопка, если я хочу добавить исключение для этого.

Я хочу сделать то же самое с API Smack, но я не знаю как.

на моем интерфейсе smack я использую что-то вроде этого:

    ConnectionConfiguration config = new ConnectionConfiguration("localhost",5222, "localhost");
    config.setSASLAuthenticationEnabled(false);

    connection = new XMPPConnection(config);
    connection.connect();

    connection.login(userName, password);

Так что вот оно. Что мне нужно сделать, чтобы принять или отклонить недействительные сертификаты? Спасибо за вашу помощь.

Ответы [ 2 ]

6 голосов
/ 19 апреля 2011

В интеграционных тестах в Apache Vysper мы используем что-то вроде:

ConnectionConfiguration connectionConfiguration = new ConnectionConfiguration("localhost", 5222);
connectionConfiguration.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
connectionConfiguration.setSASLAuthenticationEnabled(true);
connectionConfiguration.setKeystorePath("src/main/resources/bogus_mina_tls.cert");
connectionConfiguration.setTruststorePath("src/main/resources/bogus_mina_tls.cert");
connectionConfiguration.setTruststorePassword("boguspw");

См. Например: https://svn.apache.org/repos/asf/mina/vysper/trunk/server/core-inttest/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/AbstractIntegrationTestCase.java

1 голос
/ 19 апреля 2011

Я думаю, вы ищете для

config.setSelfSignedCertificateEnabled(true)
...