Сами мы не умные

Dec 14, 2020 12:52

Есть приложение на адроид, написано на java. Есть сервер, с которым оно соединяется по https.
Соединяется вот таким кодом
код на java )

линукс, памятка, программирование, андроид

Leave a comment

Comments 22

mindfactor December 14 2020, 11:41:58 UTC
Версия:

Говноприложение не умеет проверить цепочку сертификатов, потому что написано через жопу.

Поэтому на сайте надо выложить не только сам кошерный сертификат, но и всю евойную цепочку тоже.

Reply

kosenko_danila December 14 2020, 12:28:16 UTC
X509TrustManager в коде тоже был, но пришлось убрать, потому что плей.маркет ругался на использование этой вещи, как небезопасной. Гуглинг и практика нескольких дней показали, что успокоятся они только если вообще убрать этот кусок кода.

>Поэтому на сайте надо выложить не только сам кошерный сертификат, но и всю евойную цепочку тоже.
А как это сделать? По каким ключевым искать?

Reply

mindfactor December 14 2020, 12:46:55 UTC
>А как это сделать? По каким ключевым искать?

Зависит от того, какой там веб-сервер.
Для апача, например, надо в конфиге рядом с самим сертификатом указать и цепочку, вот так:

SSLCertificateKeyFile "${SRVROOT}/cert/domain-key.pem"
SSLCertificateChainFile "${SRVROOT}/cert/domain-chain.pem"

а можно и не прописывать, потому что начиная с какой-то лохматой версии он поддерживает работу в режиме "и сертификат и цепочка упакованы в один файл" и нужно всего лишь добавить цепочку в файл сертификата.

Чтобы проверить эту мою версию, проверьте ваш сайт тут:
https://www.ssllabs.com/ssltest/index.html
https://www.sslshopper.com/ssl-checker.html

если не хватает цепочки, они явно об этом напишут

Reply

mindfactor December 14 2020, 14:40:29 UTC
однако, сайт цепочку отдаёт, значит дело не в этом.

есть крохотный шанс, что нужно в DNS домена прописать вот это:
https://blog.qualys.com/product-tech/2017/03/13/caa-mandated-by-cabrowser-forum

но от отсутствия сего у меня пока ни разу проблем не было.

Как вариант, что сертификат центра сертификации не входит в корневые доверенные именно на на андроиде. Для проверки зайти на этот сайт через браузер андроида и изучите, всё ли там в порядке с сертификатами именно с т.з. браузера андроида

Reply


mindfactor December 14 2020, 12:50:47 UTC
>Недавно админы забыли обновить сертификаты на сервере, просрочили, всё поотвалилось на сайте. Купили, поставили, всё заработало. На сайте.

И да, а что, летс инкрипт использовать не судьба ? Они, конечно, гугловые выкормыши, подлецы, сволочи и мерзавцы, но вот одминов отучают всю эту возню делать руками - на раз.

Только автоматизация, только хардкор. И ничего не "забудется через год" уже никогда :)

Reply

kosenko_danila December 14 2020, 14:13:24 UTC
То есть, как руками на сервере это сделать, вы тоже не знаете. ОК.

Reply

mindfactor December 14 2020, 14:17:35 UTC
Вы пришли к врачу и говорите "у меня болит нога".

Врач начинает задавать уточняющие вопросы, писать направление на анализы.

И тут вы внезапно отвечаете ему "ну то есть как лечить мою ногу вы тоже не знаете".

занавес.

Да пожалуйста. Как клиент вы перестали быть мне интересны.

Reply

kosenko_danila December 14 2020, 14:19:09 UTC
Скажем, по каким ключевым словам искать, как это сделать.

Reply


code craftwr December 14 2020, 12:54:38 UTC
HttpsURLConnection conn;
conn = (HttpsURLConnection) (new URL(mURL)).openConnection();
conn.setConnectTimeout(20000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
String tempString = toString(conn.getInputStream());

readme!

Еще.

И еще.

Reply

Re: code kosenko_danila December 14 2020, 13:31:19 UTC
Я умею пользоваться гуглом и яндексом.
Первоначально код функции выглядел так:

public String getStr(String link ( ... )

Reply

RE: Re: code craftwr December 14 2020, 14:42:49 UTC
Не проходит проверка промежуточных сертификатов на сервере, грубо говоря, надо создать цепочку доверенных сертификатов.

Reply

Re: code kosenko_danila December 14 2020, 14:47:42 UTC
Тут выше человек вроде пытается помочь, но моих знаний, увы, мало для понимания.

Reply


Leave a comment

Up