Интересные статьи

После решения задачи, хочется рассказать об этом

Как исправить ошибку подключения ssl на андроид

Ошибка сертификата при открытии сайта с уcтройства Android

Андройд ругается на ssl сертификат.

С этого поста я начинаю свой блог. Писать я особо не умею, но решил написать данный пост т.к. решил актуальную проблему, а в инете решения четкого нет. Искал решение как побороть ошибку подключения ssl на андроид, часа три и все же с миру по нитке насобирал какие-то ответы на свои вопросы, а главное решил задачу.

Итак, у меня была ситуация, когда заказчику надоел свой хостер timeweb (главная причина медленная и тупая тех поддержка) и поставил он на меня задачу найти подходящий сервер для своего интернет магазина на битрикс, главные критерии - быстрота работы и адекватная поддержка . И конечно же все остальное:

  • Размер жесткого диска 30Г+
  • Тестовый период
  • Web сервер apache + nginx – это лучшая связка под битрикс
  • Php как модуль apache – лучшая производительность
  • Доступ по SSH
  • Адекватная техническая поддержка
  • Возможность увеличивать CPU, RAM и HDD, без смены тарифа

Выбор пал на ispserver. Заказал обычный виртуальный хостинг, для теста, но как выяснилось, он не подходит для нашего проекта, по тому как для корректной работы битрикс необходимо изменение многих директив и модулей php и самого сервера, а изменить или добавить подобные параметры нет возможности, так как они общие для всех клиентов, по крайней мене так заявил сам хостер.

Попросил для теста Виртуальный выделенный сервер VDS. Как оказалось, после теста - хороший хостинг, подходит по всем параметрам. Настроил сервер под проект, перенес сайт.

Задача осталась за малым - перенести ssl сертификат с таймвеба. Скопировал с сервера все нужные файлы, а именно

  • сертификат в формате xxx_a9e57_2bd75_1491868799_c5...10.crt
  • и ключ к нему в формате a9e57_2bd75_2b...2e.key

В isp manager создал новый существующий сертификат.

В нужные поля вставил сертификат и ключ. Но вот было еще поле цепочка сертификатов, которое я не заполнил.

И при нажатии на кнопку сохранить, вуаля, все применилось. Далее осталось только привязать данный сертификат по ссылке «WWW-домены» к самому домену.


И еще, как в последствии оказалось, в файле конфигурации (у меня Centos7 поэтому /etc/httpd/conf/vhosts/www-root/site.ru) прописать, чтобы обращение к сайту было по 443 порту. Просто добавить запись ServerName site.ru:443 И все заработало. Спустя как время, после проверки на усройстве с Андройд, во всех браузерах начала появляться ошибка подлинности сертификата и другие ошибки:

  • Идентификационные данные этого сайта не проверены
  • Сертификат сервера не является доверенным
  • Соединение с сервером зашифровано с помощью устаревших наборов шрифтов
  • Ваше соединение не защищено
  • Владелец неправильно настроил свой веб-сайт
  • Злоумышленники могут пытаться похитить ваши данные с сайта
  • NET::ERR_CERT_COMMON_NAME_INVALID
  • err ssl protocol error на телефоне андроид
И так далее и тому подобное.

Самое интересное, что десктопные компьютеры открывают сайт как положено, а браузеры на Android, в частности Сhrom, Yandex и Opera, выдают ошибку на ssl сертификат.

Долгое время искал ответ на вопрос.

После выполнения следующей команды в консоли сервера под Centos 7, выяснилось что проблема на стороне сервера, а не в андройде или браузее как могло показаться.

openssl s_client -connect site.ru:443
CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = site.ru
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = site.ru
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = site.ru
verify error:num=21:unable to verify the first certificate
verify return:1
---

Данные ошибки свидетельствуют о том, нет сертификата удостоверяющего центра.

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

Как я решил проблему.

Открыл сайт на десктопе в на иконке замка рядом с доменом, после надписи Защищенное соединение нажал ссылку подробнее. (или F12) В открывшемся внизу консоли во вкладке Security нажал view certificate и во вкладке Путь сертификации моему взору открылись все промежуточные центры сертификации до корневого. Осталось составить цепочку из этих центров сертификации.


Значит выделяем предыдущий центр, который следует до вашего сертификата, нажимаем «Просмотр сертификата» и во вкладке «Состав» находим открытый ключ и копируем его в файл при помощи одноименной кнопки. У меня не сразу получилось это сделать, но если потыкать и подключить сообразительность минут 10 и у вас все получится.

И так мы сохраняем все сертификаты у каждого промежуточного центра вплоть до корневого.

Далее составляем цепочку сертификатов.

В поле «Цепочка сертификатов», при создании сертификата в isp manager (или ispmgr), сначала необходимо вставить сертификаты всех промежуточных центров и в конце главного корневого центра. Обратите особое внимание на то, что один идет сразу после другого с новой строки в порядке того, кем выдавался сертификат и без пробелов. Конечно не забудьте, заполнить поля «Сертификат» и «Приватный ключ»

После сохранения и применения данного сертификата к вашему доменному имени в браузерах под андройд Ваш сайт будет открываться без ошибок, так получилось и у меня. Доволен и я и заказчик. Желаю вам справиться с этой несложной задачей.