Files
progcode/web/public/assets/editorial/2018/tls-ca-diagnostic-2018.svg
T
huncode 7c53ffe6bc
Build and deploy / deploy (push) Successful in 14s
revise July and August 2018 articles
2026-07-31 09:41:53 +03:00

83 lines
5.4 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 650" role="img" aria-labelledby="title desc">
<title id="title">Диагностика TLS-ошибки в PHP cURL</title>
<desc id="desc">Шесть шагов: сохранить код ошибки, определить версии клиента, проверить путь CA bundle, получить сертификаты с SNI, проверить цепочку и повторить PHP-запрос с включённой проверкой.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#10243b"/>
<stop offset="1" stop-color="#183f59"/>
</linearGradient>
<filter id="shadow" x="-10%" y="-20%" width="120%" height="140%">
<feDropShadow dx="0" dy="8" stdDeviation="8" flood-color="#07131f" flood-opacity=".35"/>
</filter>
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto">
<path d="M1 1 L11 6 L1 11 Z" fill="#78dce8"/>
</marker>
</defs>
<rect width="1200" height="650" rx="28" fill="url(#bg)"/>
<text x="70" y="85" fill="#f5fbff" font-family="Arial, sans-serif" font-size="34" font-weight="700">TLS-ошибка в PHP: не меняем false, пока не знаем причину</text>
<text x="70" y="125" fill="#b8d3e6" font-family="Arial, sans-serif" font-size="22">Каждый шаг оставляет проверяемый артефакт для следующей ветки.</text>
<g font-family="Arial, sans-serif">
<g filter="url(#shadow)">
<rect x="70" y="185" width="285" height="145" rx="18" fill="#fff8df"/>
<circle cx="112" cy="228" r="22" fill="#e59b36"/>
<text x="104" y="236" fill="#fff" font-size="22" font-weight="700">1</text>
<text x="150" y="224" fill="#183145" font-size="21" font-weight="700">Зафиксировать</text>
<text x="150" y="250" fill="#183145" font-size="21" font-weight="700">отказ</text>
<text x="105" y="282" fill="#355468" font-size="18">curl_errno + curl_error</text>
<text x="105" y="308" fill="#355468" font-size="18">до curl_close</text>
</g>
<g filter="url(#shadow)">
<rect x="457" y="185" width="285" height="145" rx="18" fill="#e7f7fa"/>
<circle cx="499" cy="228" r="22" fill="#3da8ba"/>
<text x="491" y="236" fill="#fff" font-size="22" font-weight="700">2</text>
<text x="537" y="224" fill="#183145" font-size="21" font-weight="700">Определить</text>
<text x="537" y="250" fill="#183145" font-size="21" font-weight="700">клиент</text>
<text x="492" y="282" fill="#355468" font-size="18">curl_version(): libcurl</text>
<text x="492" y="308" fill="#355468" font-size="18">и TLS-библиотека PHP</text>
</g>
<g filter="url(#shadow)">
<rect x="845" y="185" width="285" height="145" rx="18" fill="#eaf4e7"/>
<circle cx="887" cy="228" r="22" fill="#5da878"/>
<text x="879" y="236" fill="#fff" font-size="22" font-weight="700">3</text>
<text x="925" y="224" fill="#183145" font-size="21" font-weight="700">Проверить</text>
<text x="925" y="250" fill="#183145" font-size="21" font-weight="700">CA file</text>
<text x="880" y="282" fill="#355468" font-size="18">путь, чтение, версию</text>
<text x="880" y="308" fill="#355468" font-size="18">bundle</text>
</g>
<g filter="url(#shadow)">
<rect x="70" y="425" width="285" height="145" rx="18" fill="#e9ebff"/>
<circle cx="112" cy="468" r="22" fill="#6d7bd6"/>
<text x="104" y="476" fill="#fff" font-size="22" font-weight="700">4</text>
<text x="150" y="464" fill="#183145" font-size="21" font-weight="700">Снять</text>
<text x="150" y="490" fill="#183145" font-size="21" font-weight="700">цепочку</text>
<text x="105" y="522" fill="#355468" font-size="18">s_client -servername</text>
<text x="105" y="548" fill="#355468" font-size="18">-showcerts</text>
</g>
<g filter="url(#shadow)">
<rect x="457" y="425" width="285" height="145" rx="18" fill="#f8eaf4"/>
<circle cx="499" cy="468" r="22" fill="#b96799"/>
<text x="491" y="476" fill="#fff" font-size="22" font-weight="700">5</text>
<text x="537" y="464" fill="#183145" font-size="21" font-weight="700">Построить</text>
<text x="537" y="490" fill="#183145" font-size="21" font-weight="700">цепочку</text>
<text x="492" y="522" fill="#355468" font-size="18">verify: leaf + intermediate</text>
<text x="492" y="548" fill="#355468" font-size="18">против CA bundle</text>
</g>
<g filter="url(#shadow)">
<rect x="845" y="425" width="285" height="145" rx="18" fill="#f4eee3"/>
<circle cx="887" cy="468" r="22" fill="#c18442"/>
<text x="879" y="476" fill="#fff" font-size="22" font-weight="700">6</text>
<text x="925" y="464" fill="#183145" font-size="21" font-weight="700">Повторить</text>
<text x="925" y="490" fill="#183145" font-size="21" font-weight="700">PHP</text>
<text x="880" y="522" fill="#355468" font-size="18">VERIFYPEER=true</text>
<text x="880" y="548" fill="#355468" font-size="18">VERIFYHOST=2</text>
</g>
</g>
<g stroke="#78dce8" stroke-width="5" fill="none" marker-end="url(#arrow)">
<path d="M365 258 H438"/>
<path d="M752 258 H826"/>
<path d="M988 342 V400 H212 V405"/>
<path d="M365 498 H438"/>
<path d="M752 498 H826"/>
</g>
</svg>