|
|
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Задача такая : Есть сервер tomcat 7- в одном из потоков создается apache HttpClient 3.х который должен работать с удаленным сервером по https удаленный сервер требует наличие клиентского сертификата ?! вопрос как организовать такую работу ? нужен пример кода . какие файлы нужны на моем сервере? есть name***.p12 (нужны ли pem файлы ?) - все файлы , будут храниться в базе mysql , как организовать их хранение? хранить файлы на диске сервера нельзя , только в базе . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 14:56 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Java SSL работает с ключами из keystore. Формат файла часто называют JKS. Можно держать JKS в базе с импортироваными сертификатами и загружать в рантайме. Keystore можно передать в SSLSocketFactory для HttpClient. Если JKS не подходит и нужно хранить ключи в pem/p12, то можно попробовать через TrustStrategy самому валидировать сертификаты этими ключами. Например через bouncycastle: http://www.nakov.com/blog/2009/12/01/x509-certificate-validation-in-java-build-and-verify-chain-and-verify-clr-with-bouncy-castle/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 15:18 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо : у меня виртуалка и там сервер томкат - есть доступ к базе - и есть только pem и p12 файлы . нужно разрулить как то через них . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 15:42 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. И как ему подпячить pem и p12 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 16:38 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Кажется прямых решений для HttpClient 3.х вовсе нет ?! странно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 17:38 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Atum1Кажется прямых решений для HttpClient 3.х вовсе нет ?! странно Прямых решений вида httpclient.setMyPEM(InputStream pemFile) нет. Я уже написал выше, что ковырять надо в сторону TrustStrategy (нагуглить пример?), а ключи из файлов либо парсить самостоятельно (нагуглить пример?), либо через bouncycastle (нагуглить пример?). А потом самостоятельно сверять сертификат сервера (ссылку привел выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 17:50 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Странно все это . Ведь очень частая задача - написать клиента ккорый будет работать с сервером по сертификату.. Спасибо, буду гуглить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 20:41 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Atum1Странно все это . Ведь очень частая задача - написать клиента ккорый будет работать с сервером по сертификату.. Ни JSE API, ни HttpClient не умеют работать с ключами в указанном формате. Либо парсить руками, либо импортировать в JKS. SSL в JSE сделан слегка через ж. Просто работать оно не может без сертификатов в JKS. У HttpClient с этим немного лучше, но он не может использовать ключи в вашем формате. Только JKS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2014, 21:43 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, фактически алгоритм такой = получить ключи из базы - и преобразовать . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2014, 09:05 |
|
||
|
Клиент HttpClient и работа через клиентский сертификат
|
|||
|---|---|---|---|
|
#18+
Atum1фактически алгоритм такой = получить ключи из базы - и преобразовать . Куда преобразовать? Зачем? Надо их загрузить в объекты, которые предоставляеь JSSE API или bouncycastle. И оперируя этими объектами провалидировать сертификаты сервера. Ну, или смотря с какой целью вообще SSL используется. Вот в документации, например есть такой полезный для этой задачи параграф http://hc.apache.org/httpclient-3.x/sslguide.html Examples of SSL customization in HttpClient There are several custom socket factories available in our contribution package. They can be a good start for those who seek to tailor the behavior of the HTTPS protocol to the specific needs of their application: EasySSLProtocolSocketFactory can be used to create SSL connections that allow the target server to authenticate with a self-signed certificate. StrictSSLProtocolSocketFactory can be used to create SSL connections that can optionally perform host name verification in order to help preventing man-in-the-middle type of attacks. AuthSSLProtocolSocketFactory can be used to optionally enforce mutual client/server authentication. This is the most flexible implementation of a protocol socket factory. It allows for customization of most, if not all, aspects of the SSL authentication. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2014, 09:16 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38660758&tid=2127096]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 523ms |

| 0 / 0 |
