Atom Лента - Форум КриптоПро - Тема:Ошибка создания SSLSocketFactory для TLS - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:OshibkasozdanijaSSLSocketFactorydljaTLS-10:1Copyright 2024 Форум КриптоПро2024-03-29T11:48:38Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.rufileracchttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=30368&name=fileraccfileracchttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=30368&name=fileraccЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений Афанасьевfileracchttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=30368&name=fileraccYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid40432:1Ошибка создания SSLSocketFactory для TLS<table class="content postContainer_Alt" width="100%"><tr><td>Помогло. Спасибо.</td></tr></table>2013-07-17T18:10:30+03:002013-07-17T18:10:30+03:00fileracc<table class="content postContainer_Alt" width="100%"><tr><td>Помогло. Спасибо.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid40431:1Ошибка создания SSLSocketFactory для TLS<table class="content postContainer" width="100%"><tr><td>Добрый день.<br /><br />Отсутствует (см. ru.CryptoPro.ACSPClientApp.example.interfaces.ITLSData)<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
static {
// Для проверки статуса сертификата.
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
// Провайдер хеширования, подписи, шифрования по умолчанию.
cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME);
}
</code></pre>
</div></div></td></tr></table>2013-07-17T17:22:43+03:002013-07-17T17:22:43+03:00Евгений Афанасьев<table class="content postContainer" width="100%"><tr><td>Добрый день.<br /><br />Отсутствует (см. ru.CryptoPro.ACSPClientApp.example.interfaces.ITLSData)<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
static {
// Для проверки статуса сертификата.
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
// Провайдер хеширования, подписи, шифрования по умолчанию.
cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME);
}
</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid40430:1Ошибка создания SSLSocketFactory для TLS<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день.<br />Пытаюсь сделать GET запрос через TLS с использованием Apache HTTP Client.<br /><br />Код такой:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
Log.d(tag, "CryptoPro infrastructure initialization.");
final int cryptoProInitStatus = CSPConfig.initInAndroid(getApplication());
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
Security.addProvider(new JCSP());
}
if (Security.getProvider(ru.CryptoPro.ssl.Provider.PROVIDER_NAME) == null) {
Security.addProvider(new ru.CryptoPro.ssl.Provider());
}
if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) {
Security.addProvider(new RevCheck());
}
// <...>
Security.setProperty("ssl.KeyManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.TrustManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");
Log.d(tag, "Load trusted certificate store.");
final InputStream trustedCertificateStoreStream = getResources().openRawResource(R.raw.trusted_certificate_store);
final KeyStore certificateStore;
try {
certificateStore = KeyStore.getInstance(JCSP.CERT_STORE_NAME, JCSP.PROVIDER_NAME);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error when obtaining instance of KeyStore.", ex);
return null;
}
try {
certificateStore.load(trustedCertificateStoreStream, null);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error when loading trusted certificate store.", ex);
return null;
}
Log.d(tag, "Create SSLSocketFactory.");
final SSLSocketFactory sslSocketFactory;
try {
sslSocketFactory = new SSLSocketFactory(ru.CryptoPro.ssl.Provider.ALGORITHM, null, null, certificateStore, null, null);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error creating SSLSocketFactory.", ex);
return null;
}</code></pre>
</div></div><br /><br />Получаю ошибку при создании SSLSocketFactory:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> java.security.ProviderException: JCP
at ru.CryptoPro.ssl.SSLContextImpl.engineInit(Unknown Source)
at javax.net.ssl.SSLContext.init(SSLContext.java:219)
at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:193)
at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:131)
at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:92)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.security.NoSuchProviderException: JCP
at java.security.SecureRandom.getInstance(SecureRandom.java:189)
... 12 more</code></pre>
</div></div><br /><br />Подскажите, куда копать.</td></tr></table>2013-07-17T17:00:57+03:002013-07-17T17:00:57+03:00fileracc<table class="content postContainer_Alt" width="100%"><tr><td>Добрый день.<br />Пытаюсь сделать GET запрос через TLS с использованием Apache HTTP Client.<br /><br />Код такой:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
Log.d(tag, "CryptoPro infrastructure initialization.");
final int cryptoProInitStatus = CSPConfig.initInAndroid(getApplication());
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
Security.addProvider(new JCSP());
}
if (Security.getProvider(ru.CryptoPro.ssl.Provider.PROVIDER_NAME) == null) {
Security.addProvider(new ru.CryptoPro.ssl.Provider());
}
if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) {
Security.addProvider(new RevCheck());
}
// <...>
Security.setProperty("ssl.KeyManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.TrustManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");
Log.d(tag, "Load trusted certificate store.");
final InputStream trustedCertificateStoreStream = getResources().openRawResource(R.raw.trusted_certificate_store);
final KeyStore certificateStore;
try {
certificateStore = KeyStore.getInstance(JCSP.CERT_STORE_NAME, JCSP.PROVIDER_NAME);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error when obtaining instance of KeyStore.", ex);
return null;
}
try {
certificateStore.load(trustedCertificateStoreStream, null);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error when loading trusted certificate store.", ex);
return null;
}
Log.d(tag, "Create SSLSocketFactory.");
final SSLSocketFactory sslSocketFactory;
try {
sslSocketFactory = new SSLSocketFactory(ru.CryptoPro.ssl.Provider.ALGORITHM, null, null, certificateStore, null, null);
} catch (Exception ex) {
exception = ex;
Log.e(tag, "Error creating SSLSocketFactory.", ex);
return null;
}</code></pre>
</div></div><br /><br />Получаю ошибку при создании SSLSocketFactory:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-markup"> java.security.ProviderException: JCP
at ru.CryptoPro.ssl.SSLContextImpl.engineInit(Unknown Source)
at javax.net.ssl.SSLContext.init(SSLContext.java:219)
at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:193)
at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:131)
at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:92)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.security.NoSuchProviderException: JCP
at java.security.SecureRandom.getInstance(SecureRandom.java:189)
... 12 more</code></pre>
</div></div><br /><br />Подскажите, куда копать.</td></tr></table>