Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
Добрый день! Мы напрямую инициализируем TrustManagerFactory хранилищем. Код у нас следующий: Код: /**
* Открытие слушающего сокета для входящих соединений.
*
* @param port - слушаемый порт.
*/
protected ServerSocket openListenSocket(int port) throws IOException {
SSLContext ctx = getContext();
String bindIp = config.getParam("bindIp");
ServerSocket socket;
if ("*".equals(bindIp)) {
socket = ctx.getServerSocketFactory().createServerSocket(port);
} else {
socket = ctx.getServerSocketFactory().createServerSocket(
port, 10000, InetAddress.getByName(config.getParam("bindIp")));
}
((SSLServerSocket) socket).setNeedClientAuth(true);
((SSLServerSocket) socket).setPerformancePreferences(2, 1, 0);
return socket;
}
/**
* Инициализация ssl-контекста для ГОСТ и RSA,
*
* @return SSLContext контекст соединения
* @throws IOException при ошибке
*/
public SSLContext getContext() throws IOException {
try {
KeyManagerFactory kmf = null;
TrustManagerFactory tmf = null;
KeyStore ts = null;
String sslContext = config.getParam("sslContext");
if ("GostTLS".equals(sslContext)) {
KeyStore ks = KeyStore.getInstance("HDImageStore");
ks.load(null, null);
kmf = KeyManagerFactory.getInstance("GostX509");
kmf.init(ks, config.getParam("keyStorePassword").toCharArray());
ts = KeyStore.getInstance("HDImageStore");
tmf = TrustManagerFactory.getInstance("GostX509");
} else {
FileInputStream ksStream = null;
try {
KeyStore ks = KeyStore.getInstance("JKS");
ksStream = new FileInputStream(config.getParam("keyStore"));
ks.load(ksStream, config.getParam("keyStorePassword").toCharArray());
kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, config.getParam("keyStorePassword").toCharArray());
} finally {
IOUtils.closeQuietly(ksStream);
}
ts = KeyStore.getInstance("JKS");
tmf = TrustManagerFactory.getInstance("SunX509");
}
FileInputStream tsFile = null;
try {
tsFile = new FileInputStream(config.getParam("trustStore"));
ts.load(tsFile, config.getParam("trustStorePassword").toCharArray());
tmf.init(ts);
} finally {
IOUtils.closeQuietly(tsFile);
}
SSLContext ctx = SSLContext.getInstance(sslContext);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
return ctx;
} catch (IOException e) {
throw new IOException(e.getMessage(), e);
} catch (GeneralSecurityException e) {
throw new IOException(e.getMessage(), e);
}
}
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.11.2012(UTC) Сообщений: 21 Откуда: Уфа
Поблагодарили: 1 раз в 1 постах
|
Автор: Cynepnaxa ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Добрый день! Разрабатываем сервер, использующий JTLS. Подскажите пожалуйста, а можно как-нибудь ключ выбирать не первый попавшийся к которому пароль подошел, а сначала контейнер по названию выбрать, потом его пароль проверить?
https://www.cryptopro.ru...ts&m=67699#post67699
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close