Статус: Новичок
Группы: Участники
Зарегистрирован: 19.05.2020(UTC) Сообщений: 5
|
Добрый день. Получаю ошибку javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure при попытке получения маркера доступа после получения авторизационного кода. Код получения запроса токена Код:System.setProperty("ru.CryptoPro.defaultSSLProv", JCSP.PROVIDER_NAME);
System.setProperty("javax.net.ssl.trustStoreProvider", JCSP.PROVIDER_NAME);
System.setProperty("javax.net.ssl.keyStoreType", JCSP.HD_STORE_NAME);
System.setProperty("javax.net.ssl.keyStorePassword", KEYSTORE_PASSWORD);
System.setProperty("javax.net.ssl.trustStoreType", JCSP.HD_STORE_NAME);
System.setProperty("javax.net.ssl.trustStore",
"C:\\trust\\trust.store");
System.setProperty("javax.net.ssl.trustStorePassword", KEYSTORE_PASSWORD);
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
try {
SSLSocketFactory factory = TLSContext.initClientSSL(null,
"C:\\trust\\trust.store", KEYSTORE_PASSWORD, null);
HttpsURLConnection.setDefaultSSLSocketFactory(factory);
} catch (Exception e) {
e.printStackTrace();
}
String timestamp = getTimestamp();
OAuthClientRequest oAuthClientRequest = OAuthClientRequest.tokenLocation("https://esia-portal1.test.gosuslugi.ru/aas/oauth2/te")
.setClientId(OPTIONS_CLIENT_ID)
.setCode(optionsCode)
.setGrantType(grantType)
.setClientSecret(generateClientSecret(scope, timestamp))
.setParameter("state", optionsState)
.setRedirectURI(URI_REDIRECT)
.setScope(scope)
.setParameter("timestamp", timestamp)
.setParameter("token_type", "Bearer")
.setParameter("access_type", OPTIONS_ACCESS_TYPE_OFFLINE)
.buildBodyMessage();
OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
return oAuthClient.accessToken(oAuthClientRequest, OAuth.HttpMethod.POST, OAuthJSONAccessTokenResponse.class);
Код формирования подписи: Код:
private byte[] sign(String str) throws Exception {
KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME,
JCSP.PROVIDER_NAME);
keyStore.load(null, null);
PrivateKey key = (PrivateKey) keyStore.getKey(KEY_ALIAS, KEYSTORE_PASSWORD.toCharArray());
Signature signature = Signature.getInstance(JCP.GOST_SIGN_2012_512_NAME);
signature.initSign(key);
byte[] data = str.getBytes();
signature.update(data);
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(KEY_ALIAS);
return CMSSign.createHashCMSEx(data, false, new PrivateKey[]{key}, new Certificate[]{certificate}, null,
true, false, CMStools.DIGEST_OID_2012_512, CMStools.SIGN_OID_2012_512,
CMStools.DIGEST_ALG_NAME_2012_512, JCP.GOST_SIGN_2012_512_NAME, JCSP.PROVIDER_NAME);
}
Хранилище сертификатов: Информация о ключе: Кто-нибудь может подсказать, что делать в такой ситуации или что я делаю не так? Отредактировано пользователем 27 мая 2020 г. 12:20:37(UTC)
| Причина: Не указана
|