Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Отправка запроса https с сертификатом и ключевым файлом  [new]
Павел Гужанов
Member

Откуда: Наро-Фоминск
Сообщений: 507
Здравствуйте.
Отправляю POST https запрос с использованием Postman.
В системе необходимый сертификат установлен.
В настройках Postman указываю путь к файлу сертификата и к ключевому файлу, в заголовке запроса передаю содержимое сертификата. Все работает.

Пытаюсь сделать то же самое из приложения с использованием org.apache.http.client.HttpClient и org.apache.http.client.methodы.HttpPost.
В заголовке содержимое сертификата я добавил. А вот где прописать пути к файлу сертификата и к ключевому файлу - разобраться не могу.

Подскажите пожалуйста, как правильно отправить https запрос из java кода
18 май 21, 17:14    [22323746]     Ответить | Цитировать Сообщить модератору
 Re: Отправка запроса https с сертификатом и ключевым файлом  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Я не очень понимаю что такое "В заголовке содержимое сертификата я добавил", но да ладно.. Для того чтоб клиент доверял сертификату нужно чтоб root сертификат был в trusted хранилище (для Java это файл carcerts где-то внутри JAVA_HOME). А также чтоб сервер отдавал всю цепочку сертификатов (certificate chain), иначе прийдется intermediate серты тоже перечислять в cacerts, что неудобно. Если серт самоподписанный, то его и нужно добавить в cacerts, он сам для себя root.

Для работы с cacerts в Java используют cmd утилиту keytool.

PS: Ну и никаких путей к "ключевому файлу" или заголовков дополнительных добавлять не надо. Ни в случае Java, ни в случае Postman.

Сообщение было отредактировано: 18 май 21, 18:17
18 май 21, 18:18    [22323778]     Ответить | Цитировать Сообщить модератору
 Re: Отправка запроса https с сертификатом и ключевым файлом  [new]
Sergunka
Member

Откуда: Bay Area, CA
Сообщений: 2517
Павел Гужанов
Здравствуйте.
Отправляю POST https запрос с использованием Postman.
В системе необходимый сертификат установлен.
В настройках Postman указываю путь к файлу сертификата и к ключевому файлу, в заголовке запроса передаю содержимое сертификата. Все работает.

Пытаюсь сделать то же самое из приложения с использованием org.apache.http.client.HttpClient и org.apache.http.client.methodы.HttpPost.
В заголовке содержимое сертификата я добавил. А вот где прописать пути к файлу сертификата и к ключевому файлу - разобраться не могу.

Подскажите пожалуйста, как правильно отправить https запрос из java кода


Лет десять назад пути прописывались в пропетиз

            System.setProperty("javax.net.ssl.keyStoreType", KEY_STORE_TYPE);
            System.setProperty("javax.net.ssl.keyStore", KEY_STORE);
            System.setProperty("javax.net.ssl.keyStorePassword", KEY_STORE_PASS );

            System.setProperty("javax.net.ssl.trustStoreType", TRUST_STORE_TYPE);
            System.setProperty("javax.net.ssl.trustStore", TRUST_STORE);
            System.setProperty("javax.net.ssl.trustStorePassword", TRUST_STORE_PASS);

            System.setProperty("javax.net.debug", "ssl,handshake");


https://github.com/SVyatkin/tomcat-ssl-java-example/blob/master/src/main/java/com/ssl/SSLTest.java

Тут у меня древняя статья на эту тему
https://vyatkins.wordpress.com/2013/11/19/java-base-ssl-connection-to-tomcat-with-server-and-client-certifications/
18 май 21, 22:25    [22323853]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить