Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline umonkey  
#1 Оставлено : 3 апреля 2012 г. 18:41:40(UTC)
umonkey

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.04.2012(UTC)
Сообщений: 2

Добрый день.

Сервер использует аутентификацию с помощью клиентских сертификатов. Я с помощью ControlPane сгенерировал ключ, отправил куда следует, полученный в ответ сертификат (бинарный файл с расширением "cer") добавил в хранилище сертификатов, путь к которому указываю в коде. При попытке подключения получаю ошибку BAD_CERTIFICATE, полный лог:

Код:
$ java -Djavax.net.debug=all HelloWorldApp
setting up default SSLSocketFactory
class ru.CryptoPro.ssl.SSLSocketFactoryImpl is loaded
Apr 3, 2012 2:33:10 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider = 
Apr 3, 2012 2:33:10 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: 
Apr 3, 2012 2:33:10 PM ru.CryptoPro.JCP.tools.z a
INFO: Loading JCP 1.0.52
Apr 3, 2012 2:33:10 PM ru.CryptoPro.JCP.tools.z a
INFO: JCP loaded.
instantiated an instance of class ru.CryptoPro.ssl.SSLSocketFactoryImpl
Apr 3, 2012 2:33:12 PM ru.CryptoPro.ssl.d a
WARNING: %% No alias is match
javax.net.ssl.SSLHandshakeException: Received fatal alert: BAD_CERTIFICATE
	at ru.CryptoPro.ssl.K.a(Unknown Source)
	at ru.CryptoPro.ssl.K.a(Unknown Source)
	at ru.CryptoPro.ssl.t.a(Unknown Source)
	at ru.CryptoPro.ssl.t.i(Unknown Source)
	at ru.CryptoPro.ssl.t.startHandshake(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:440)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
	at HelloWorldApp.main(hello.java:34)


Код примитивный, по мотивам примеров:

Код:
import java.net.URL;
import java.net.URLConnection;

class HelloWorldApp {
	// Пароль везде используется один.
	private static final String secret = "secret";

	private static final String remote_url = "https://a.b.c.d:port";

	public static void main(String[] args) {
		System.setProperty("javax.net.debug", "ssl");

		// ключи лежат в /var/CPROcsp/keys/$USERNAME/second.000

		System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
		System.setProperty("javax.net.ssl.keyStore", "second");
		System.setProperty("javax.net.ssl.keyStorePassword", secret);

		System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
		System.setProperty("javax.net.ssl.trustStore", "keys/CertStore");
		System.setProperty("javax.net.ssl.trustStorePassword", secret);

		try {
			URL url = new URL(remote_url);
			URLConnection connection = url.openConnection();

			connection.setDoInput(true);
			connection.setDoOutput(true);

			connection.connect();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


Подскажите, пожалуйста, с чем может быть связана ошибка? Можно ли как-нибудь включить более детальный отладочный вывод?
Offline Евгений Афанасьев  
#2 Оставлено : 3 апреля 2012 г. 19:16:02(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
Проверьте с помощью консоли ControlPane <JRE_PATH>, действительно ли JCP видит ключевое хранилище. Возможно, ошибка из-за того, что вы поместили сертификат в хранилище CSP, а ключи берутся из хранилища JCP.

Отредактировано пользователем 3 апреля 2012 г. 19:16:36(UTC)  | Причина: Не указана

Offline umonkey  
#3 Оставлено : 5 апреля 2012 г. 16:31:10(UTC)
umonkey

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.04.2012(UTC)
Сообщений: 2

Проверял, видит. Хранилище с помощью панель JCP и создавалось.

Попробовал ключ, сгенерированный с помощью КриптоАРМ — дополнительно получаю сообщение "No appropriate keys for handshake", хотя пути, пароли и экспортные ограничения в порядке.

Кажется уже всё перепробовал. Нет ли способов включения более подробной отладочной информации? (Например, какие ключи вообще найдены, даже если они не appropriate, итд.)

Отредактировано пользователем 5 апреля 2012 г. 16:35:13(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 5 апреля 2012 г. 17:05:20(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Для логирования попробуйте задать ru.CryptoPro.ssl.SSLLogger.level в logging.properties
А пользовательский ключ генерировали с параметрами exchange key и client authentication?
Offline Евгений Афанасьев  
#5 Оставлено : 5 апреля 2012 г. 17:06:02(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Для логирования попробуйте задать ru.CryptoPro.ssl.SSLLogger.level в logging.properties
А пользовательский ключ генерировали с параметрами exchange key и client authentication?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.