Як виправити неповний ланцюжок SSL


29

У мене встановлений сертифікат SSL Go Daddy і працює чудово скрізь, окрім Android.

https://www.ssllabs.com/ssltest/analyze.html повідомляє, що ланцюжок неповна, і я перечитав, що переповнення стека не в неправильному порядку на Android.

Але як я приведу це в порядок? На моєму сервері? Сертифікат SSL себе потрібно переробляти? Перемістити речі на FTP?

Відповіді:


19

Після відповіді на Zakjan, у мене виникла проблема, коли я намагався використовувати jquery, щоб зробити запит AJAX на моєму новому захищеному сервері, у веб-перегляді Android. Він працював у браузері, але не в моєму додатку.

Я використовував цей сайт: https://certificatechain.io/

Я вставив текст свого підписаного .crt-файлу, який я повернув із Comodo (positiveSSL), і це повернуло мені стислий вміст про все, що мені потрібно. Я зберегла його як мій домен + "chain.crt" (див. Нижче)

Потім у свої конфігурації apache я ввів щось подібне для цього конкретного віртуального хоста:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Після цього у веб-перегляду мого додатка Android не виникло проблем із використанням ajax для POST на моєму сервері. Я спробував це на двох реальних пристроях, на одному працює 2.3.4, на одному працює 4.що. А на емуляторі працює 2.3. Всі працювали.

Я сподіваюся, що це допомагає.


1
Ключовим для мене було додавання SSLCACertificateFileдирективи та вказівка ​​її на файл CA, який мені надав повноваження. Це не спрацює, якби я просто з'єднав інші сертифікати зі своїм файлом сертифікатів.
Alex W

У старих апашах замість SSLCACertificateFile можна використовувати SSLCertificateChainFile (про всяк випадок, якщо ви шукаєте цей ключ у своїх конфігураціях і не можете його знайти).
dr0i

Неймовірно, але у відповіді @Richard використовується сертифікат сайтуchacha.io, і на сайті написано: "... натхненний каналом-розв'язувачем Яна Жака", який відповів на це запитання тут: superuser.com/a/866523/92500 , дякую @zakjan!
Андрес Моралес

Я SSLCACertificateFileбула лінією, яку я пропустив. Спочатку я вважав, що мій офіційний центр був занадто новим, оскільки SSL працював, коли його вимагали деякі браузери / ОС, але не інші. Використання decoder.link/sslchecker допомогло з’ясувати, що моя конфігурація помилялася, і ця відповідь мала виправлення. Дякую!!
josephdpurcell

9

Ланцюжок був у файлі crt, щоб оригінальний SSL працював.

Для GoDaddy є другий серт - gd_bundle.crt

Скопіюйте цю інформацію та додайте її до crt, встановленого на сервері.

Отже, початковий crt на сервері мав 1 сертифікат, а після нього буде 3 у тому ж файлі. Це ланцюжок.

У мене все ще є прив’язка до ланцюжкових питань на ssllabs.com, але це не проблема, а лише можливість залишити чи вийти - відповідно до - /security/24561/ssltest-chain-isissue -контейнер-якір / 24566 # 24566


2
Щоб позбутися проблем із ланцюжком, видаліть останній сертифікат з gd_bundle.crt
sanmai

7

Ви можете вирішити неповну проблему ланцюжка сертифікатів вручну, об'єднавши всі сертифікати від сертифіката до надійного кореневого сертифіката (виключно в цьому порядку), щоб запобігти таким проблемам. Зверніть увагу, довіреного кореневого сертифіката не повинно бути там, оскільки він уже включений у сховище кореневих сертифікатів системи.

Ви повинні мати можливість отримати проміжні сертифікати у емітента та скласти їх разом. До речі, я написав сценарій для автоматизації процедури, потрібен сертифікат для отримання виводу правильно пов'язаних сертифікатів. https://github.com/zakjan/cert-chain-resolver


Це звучить як рішення, яке лише "наводить" локальну машину на думку про те, що сертифікат налаштований правильно.
Alex W

Ні. Передбачається, що пакет вихідних сертифікатів буде завантажений на сервер, який надсилає вміст веб-сайту. Кожен клієнт отримає сертифікат зі своїми проміжними продуктами.
zakjan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.