Подтянуть файл формата .p12 в программу java

240
27 июня 2017, 22:29

Есть приложение на java, есть файл file.p12(пароль тоже есть) и сервер(linux без прав администратора), на котором это приложение надо развернуть. Можете подсказать, что и где нужно сделать, чтобы рабочее уже приложение(без ssl) вновь заработало, уже с использованием ssl? Увы, код вставить не могу но смысл приложения в том, что оно вешается на порт и слушает его. Часть перепечатала:

private ServerSocket ss; 
private int port;
ExecutorService ex = Executors.newFixedThreadPool(poolSize); ss= new ServerSocket(port);
ex.execute(new Processor(ss.accept()));
Answer 1

Можно так

ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault();
ServerSocket ssocket = ssocketFactory.createServerSocket(port);
Socket socket = ssocket.accept();

Можно более тонко подстроить. Например так

    SSLContext sslContext = SSLContext.getInstance("TLS");
    SSLServerSocketFactory ssf = sslContext.getServerSocketFactory();
    SSLServerSocket ss = (SSLServerSocket) ssf.createServerSocket(port);
    ss.setEnabledProtocols(new String[]{ "TLSv1", "SSLv3"});
    ss.setEnabledCipherSuites(new String[]{});
    ss.setNeedClientAuth(false);
    ss.accept();

У вас должны быть более подробные спецификации, чтобы понять как сделать настроки и сервер сокет.

UPD1: Да, забыл как подтягивать сертификат. Вот один из примеров интернета:

char[] keyPassword =  "P@ssw0rd!".toCharArray();
FileInputStream keyFile = new FileInputStream("ssl.p12"); 
// init keystore
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(keyFile, keyPassword);
// init KeyManagerFactory
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keyPassword);
// init KeyManager
KeyManager keyManagers[] = keyManagerFactory.getKeyManagers();
// init the SSL context
SSLContext sslContext = SSLContext.getDefault();
sslContext.init(keyManagers, null, new SecureRandom());
// get the socket factory
SSLServerSocketFactory socketFactory = sslContext.getServerSocketFactory();
// and finally, get the socket
ServerSocket serverSocket = socketFactory.createServerSocket(443);

Не очень уверен что последний код очень рабочий, но идею, думаю, я подал для поиска правильного решения.

READ ALSO
Skype bot добавить кнопки

Skype bot добавить кнопки

Добрый день

300
Error inflating class в адаптере

Error inflating class в адаптере

Выбивает следующую ошибку в адаптере, хотя изменения делал в самом классе

242
Spring и парсинг сайтов

Spring и парсинг сайтов

Можно ли применить Spring для чтения данных с других сайтов?

233