Справжнє виправлення цього полягає в тому, щоб ваш сервер представляв усі сертифікати в ланцюжку, а не лише сертифікат кінцевої сутності (сервера).
Наведіть свого адміністратора сервера на RFC 5246 Розділ 7.4.2, де чітко зазначено, що це повідомлення передає клієнту ланцюжок сертифікатів .
Якщо ваш адміністратор відмовляється / не може цього зробити з якихось причин, ваш альтернативний варіант - спробувати приступити curl
до роботи з неправильним рукостисканням.
Відповідно до повідомлення у списку розсилки Curl:
Чи може хтось підтвердити, чи підтримує cURL проміжний сертифікат (чи ні)?
Так. Усі сертифікати ca мають ланцюжок сертифікатів, що йде до кореня. Пачка ca, яку ви використовуєте з завитком, повинна складатися з сертів для всього ланцюга.
/ daniel.haxx.se
Ви повинні мати можливість додати Root CA та всі сертифікати проміжних продуктів до пакету та вказати curl
на нього за допомогою --cacert <file>
параметра.
Оскільки ваші браузери працюють, ви можете отримати доступ до правильних сертифікатів CA звідти. На вкладці сертифікати (різні для кожного браузера, але я впевнений, що ви це зрозумієте) перегляньте ланцюжок сертифікатів. Двічі клацніть Root CA першого Globalsign Root CA - G1 і на Детальніше вкладці, клацніть Копіювати в файл ... . Збережіть як root.cer
. Зробіть те саме з AlphaSSL CA - SHA256 - G2 і збережіть його як issuing.cer
. Об’єднайте їх разом в один файл (наприклад chain.cer
) і використовуйте це як аргумент -cacert
.
Як люб’язно зазначає @AB, відсутній сертифікат можна також знайти тут .
Ваші браузери працюють, оскільки вони кешують сертифікати CA. Якщо ви перейшли на правильно налаштований веб-сайт у певний момент минулого, сертифікат якого виданий тим самим CA, що і сертифікат вашого сервера, він буде кешований браузером. Згодом, коли ви відвідуєте неправильно налаштований сайт, ваш веб-переглядач використовуватиме сертифікати CA у своєму кеші для створення ланцюга. Вам здається, що все добре, хоча за кадром, сервер неправильно налаштований.
Зауважте, що в Windows, IE / Edge та Chrome спільний кеш, а Firefox використовує свій власний.
На додаток до вищезазначеного, IE / Edge та Chrome (оскільки вони мають один і той же криптовалютний стек) використовуватимуть розширення в межах сертифікатів під назвою AuthorityInformationAccess . Це опція caIssuer, яка надає URL-адресу, з якої можна завантажити сертифікат CA сертифікату кінцевої особи. Тому, навіть якщо один із цих браузерів не кешував відсутніх сертифікатів попереднього перегляду, він може отримати його за потреби. Зауважте, що Firefox цього не робить, тому іноді Firefox може показувати помилки сертифікатів, коли IE / Edge та Chrome, здається, працюють.