Changes between Version 4 and Version 5 of Examples3uHttps


Ignore:
Timestamp:
Aug 26, 2026, 10:10:12 AM (5 days ago)
Author:
roman_zhur
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Examples3uHttps

    v4 v5  
    1515HTTPS (Hypertext Transfer Protocol Secure) - защищённый вариант протокола HTTP. При работе по HTTPS данные между браузером и блоком MC04-DSL-3U передаются внутри TLS-соединения. TLS шифрует трафик, контролирует его целостность и позволяет браузеру проверить сертификат блока.
    1616
    17 В этой инструкции рассмотрена настройка HTTPS на плате SW-01 в составе блока MC04-DSL-3U. Сертификат выпускается только на IP-адрес платы SW-01.
     17В этой инструкции рассмотрена настройка HTTPS на плате SW-01 в составе блока MC04-DSL-3U.
    1818
    1919В инструкции описаны:
     
    3535 * версия защищённого протокола - TLS 1.2 или TLS 1.3.
    3636
    37 {{{#!div class="wiki admonition note"
     37{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    3838'''Примечание.''' \\
    3939Алгоритм сертификата и алгоритм шифрования TLS-трафика - разные параметры. ECDSA используется для подтверждения подлинности платы и цифровой подписи. После установления соединения прикладные данные шифруются согласованным набором TLS, например AES-GCM или ChaCha20-Poly1305.
     
    5353В командах этой инструкции используется IP-адрес {{{192.168.20.39}}}. Замените его на фактический IP-адрес вашей платы SW-01.
    5454
    55 {{{#!div class="wiki admonition warning"
     55{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    5656'''Внимание.''' \\
    5757До загрузки сертификата убедитесь, что у вас сохраняется альтернативный доступ к плате по HTTP или SSH. Ошибка в сертификате или закрытом ключе может привести к невозможности открыть веб-интерфейс по HTTPS.
     
    5959
    6060
    61 {{{#!div class="wiki admonition warning"
    62 '''Внимание.''' \\
    63 Плата SW-01 не поддерживает зашифрованные закрытые ключи. Попытка загрузить ключ с заголовком {{{-----BEGIN ENCRYPTED PRIVATE KEY-----}}} приводит к перезагрузке платы. Используйте только незашифрованный ключ PKCS!#8 в формате PEM с заголовком {{{-----BEGIN PRIVATE KEY-----}}}.
     61{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
     62'''Внимание.''' \\
     63Плата SW-01 не поддерживает зашифрованные закрытые ключи. Попытка загрузить ключ с заголовком {{{BEGIN ENCRYPTED PRIVATE KEY}}} приводит к перезагрузке платы. Используйте только незашифрованный ключ PKCS!#8 в формате PEM с заголовком {{{BEGIN PRIVATE KEY}}}.
    6464}}}
    6565
     
    7070
    7171В настоящем примере используется OpenSSL для Windows в сборке Shining Light Productions. Установочный пакет можно скачать на странице [https://slproweb.com/products/Win32OpenSSL.html Win32/Win64 OpenSSL Installer for Windows], но вы можете использовать любую другую программу или сборку OpenSSL. При использовании другой программы команды могут отличаться, однако параметры создаваемого сертификата и ключа должны соответствовать требованиям этой инструкции.
     72
     73Приведённые далее команды рассчитаны на OpenSSL 3.5 и совместимы с OpenSSL 4.x.
    7274
    7375После установки откройте командную строку Windows. Для этого нажмите {{{Win-R}}}, введите {{{cmd}}} и нажмите Enter.
     
    7678{{{openssl version}}}
    7779
    78 Команда {{{openssl}}} запускает программу OpenSSL, а подкоманда {{{version}}} выводит её версию. Приведённые далее команды рассчитаны на OpenSSL 3.5 и совместимы с OpenSSL 4.x.
     80Команда {{{openssl}}} запускает программу OpenSSL, а подкоманда {{{version}}} выводит её версию.
    7981
    8082Если Windows выводит сообщение, что команда {{{openssl}}} не найдена, временно добавьте каталог программы в переменную {{{PATH}}} текущего окна CMD: \\
    8183{{{set "PATH=C:\Program Files\OpenSSL-Win64\bin;%PATH%"}}}
    8284
    83 Где:
    84  * {{{set}}} - задаёт переменную среды в текущем окне CMD;
    85  * {{{PATH}}} - список каталогов, в которых Windows ищет исполняемые файлы;
    86  * {{{C:\Program Files\OpenSSL-Win64\bin}}} - стандартный каталог {{{openssl.exe}}} для 64-разрядной сборки;
    87  * {{{%PATH%}}} - сохраняет остальные каталоги, которые уже содержались в {{{PATH}}}.
    88 
    8985Изменение действует только до закрытия текущего окна CMD. Если OpenSSL установлен в другом каталоге, укажите фактический путь к папке {{{bin}}}.
    9086
     
    9692== 5. Создание рабочего каталога ==
    9793
    98 Создайте отдельный каталог для файлов УЦ (Удостоверяющий центр) и платы: \\
     94Для удобства создайте отдельную рабочую папку для файлов УЦ (Удостоверяющий центр) и платы: \\
    9995{{{mkdir "%USERPROFILE%\equipment-certificates"}}}
    10096
     
    117113=== 6.1. Создание закрытого ключа УЦ ===
    118114
    119 {{{#!div class="wiki admonition warning"
     115{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    120116'''Внимание.''' \\
    121117Файлы {{{mc04-ca.key}}} и {{{sw01.key}}} являются закрытыми ключами. \\
    122 Любой человек, получивший закрытый ключ платы, сможет выдавать себя за эту плату. Компрометация ключа локального УЦ позволит выпускать сертификаты, которым будут доверять компьютеры с установленным корневым сертификатом этого УЦ.
     118Любой человек, получивший закрытый ключ платы, сможет выдавать себя за эту плату. Компрометация ключа локального УЦ  позволит выпускать сертификаты, которым будут доверять компьютеры с установленным корневым сертификатом этого УЦ.
    123119}}}
    124120
     
    130126OpenSSL запросит пароль для защиты ключа. Введите стойкий пароль и сохраните его в защищённом месте. При вводе пароля символы в CMD не отображаются - это нормальное поведение.
    131127
    132 Ключ УЦ защищается паролем, потому что он используется вручную при выпуске сертификатов. Ключ SW-01, напротив, должен загружаться сервером автоматически после включения платы, поэтому его нельзя защитить паролем.
     128Ключ УЦ защищается паролем, потому что он используется вручную при выпуске сертификатов. Ключ SW-01, напротив, должен загружаться автоматически после включения платы, поэтому его нельзя защитить паролем.
    133129
    134130Проверьте первую строку ключа УЦ: \\
     
    141137
    142138'''Этот зашифрованный ключ предназначен только для локального УЦ и не загружается в SW-01.'''
     139
    143140[[Image(настройка HTTPS ред-03.png, align=center)]]
     141
    144142=== 6.2. Создание корневого сертификата УЦ ===
    145143
     
    202200== 8. Создание запроса на сертификат SW-01 ==
    203201
     202Сертификат выпускается только на IP-адрес платы SW-01.
     203
    204204Введите команду, заменив {{{192.168.20.39}}} на фактический IP-адрес платы:
    205205
     
    253253
    254254'''До загрузки в SW-01 выполните все проверки из этого раздела.'''
    255 
    256 === 10.1. Проверка цепочки доверия ===
     255----
     256'''Проверка цепочки доверия'''
    257257
    258258{{{openssl verify -CAfile mc04-ca.crt sw01.crt}}}
     
    267267sw01.crt: OK
    268268}}}
    269 
    270 === 10.2. Проверка IP-адреса ===
     269----
     270'''Проверка IP-адреса'''
    271271
    272272{{{openssl x509 -in sw01.crt -noout -checkip 192.168.20.39}}}
     
    279279}}}
    280280
    281 === 10.3. Проверка срока и назначения ===
     281----
     282'''Проверка срока и назначения'''
    282283
    283284{{{openssl x509 -in sw01.crt -noout -subject -issuer -dates -ext subjectAltName,basicConstraints,keyUsage,extendedKeyUsage}}}
     
    290291 * {{{Digital Signature}}};
    291292 * {{{TLS Web Server Authentication}}}.
    292 
    293 === 10.4. Проверка соответствия ключа сертификату ===
     293----
     294'''Проверка соответствия ключа сертификату'''
    294295
    295296Получите открытый ключ из закрытого ключа платы:
     
    321322Если ключ соответствует сертификату, CMD сообщит, что различия не найдены.
    322323
    323 [[Image(настройка HTTPS ред-08.png, align=center)]]
     324[[Image(настройка HTTPS ред-08.png, align=center, 99%)]]
    324325
    325326== 11. Загрузка сертификата в SW-01 ==
     
    363364 * используется незашифрованный ключ с заголовком {{{BEGIN PRIVATE KEY}}}.
    364365
    365 {{{#!div class="wiki admonition warning"
     366{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    366367'''Внимание.''' \\
    367368После нажатия '''ОК''' сертификат и ключ немедленно загружаются в плату. Не нажимайте '''ОК''', пока не выполнены все проверки предыдущего раздела.
     
    384385== 12. Установка корневого сертификата ==
    385386
    386 Корневой сертификат можно добавить либо в доверенное хранилище Windows, либо в локальное хранилище отдельного браузера. В первом случае сертификату будут доверять приложения и браузеры, использующие системное хранилище Windows. Во втором случае доверие будет действовать только в том браузере и профиле, в которые импортирован сертификат, не затрагивая Windows, другие браузеры и приложения. Например, Mozilla Firefox позволяет импортировать корневой сертификат в собственное хранилище выбранного профиля.
    387 
    388 Перед установкой выведите SHA-256-отпечаток корневого сертификата: \\
     387Корневой сертификат можно добавить либо в доверенное хранилище Windows, либо в локальное хранилище отдельного браузера. В первом случае сертификату будут доверять приложения и браузеры, использующие системное хранилище Windows. Во втором случае доверие будет действовать только в том браузере и профиле, в которые импортирован сертификат, не затрагивая Windows, другие браузеры и приложения.
     388
     389Если файл передавался на другой компьютер, сравните отпечаток с исходным по независимому каналу. Отпечаток позволяет убедиться, что устанавливается именно созданный вами сертификат.
     390
    389391{{{openssl x509 -in mc04-ca.crt -noout -fingerprint -sha256}}}
    390392
    391 Где:
    392  * {{{-fingerprint}}} - выводит отпечаток сертификата;
    393  * {{{-sha256}}} - вычисляет отпечаток с помощью SHA-256.
    394 
    395 Отпечаток позволяет убедиться, что устанавливается именно созданный вами сертификат. Если файл передавался на другой компьютер, сравните отпечаток с исходным по независимому каналу.
    396393
    397394=== 12.1. Установка корневого сертификата в хранилище Windows через CMD ===
     
    407404 * {{{mc04-ca.crt}}} - добавляемый открытый сертификат УЦ.
    408405
    409 {{{#!div class="wiki admonition warning"
     406{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    410407'''Внимание.''' \\
    411408Установка корневого сертификата локального УЦ в доверенное хранилище Windows означает, что операционная система и использующие это хранилище приложения будут доверять всем сертификатам, подписанным данным УЦ. Если закрытый ключ УЦ будет скомпрометирован, злоумышленник сможет выпускать сертификаты, которым этот компьютер будет доверять.
     
    431428=== 12.2. Установка корневого сертификата только в браузер ===
    432429'''на примере Mozila Firefox'''
    433 
    434 Если сертификат должен использоваться только в браузер, его можно импортировать в собственное хранилище выбранного профиля браузера. В этом случае доверие к локальному УЦ не добавляется в Windows и не распространяется на другие браузеры и приложения.
    435 
    436 Приведем пример для браузера Firefox.
    437430
    438431Для установки сертификата:
     
    445438 1. Закройте и заново откройте Firefox, затем перейдите на {{{https://192.168.20.39}}}.
    446439
    447 {{{#!div class="wiki admonition warning"
     440{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    448441'''Внимание.''' \\
    449442Устанавливайте корневой сертификат {{{mc04-ca.crt}}}, а не сертификат платы {{{sw01.crt}}}. Не импортируйте в браузер или хранилище Windows закрытые ключи {{{mc04-ca.key}}} и {{{sw01.key}}}.
     
    455448== 13. Проверка HTTPS ==
    456449
    457 === 13.1. Проверка через браузер ===
     450'''Проверка через браузер'''
    458451
    459452Откройте:
     
    467460 * браузер не сообщает о несоответствии IP-адреса.
    468461
    469 === 13.2. Проверка TLS 1.3 ===
     462----
     463
     464'''Проверка TLS 1.3'''
    470465
    471466В CMD выполните:
     
    494489
    495490Параметр {{{-tls1_2}}} принудительно выбирает TLS 1.2. Успешное соединение подтверждает возможность работы клиентов, которые ещё не используют TLS 1.3.
    496 == 14. Замена сертификата ==
     491
     492== 14. Дополнительная информация ==
     493
     494=== 14.1 Замена сертификата ===
    497495
    498496До окончания срока действия создайте новый ключ и новый запрос, выпустите новый сертификат и повторите загрузку. Создание нового ключа предпочтительнее повторного использования старого: это ограничивает последствия возможной незамеченной компрометации предыдущего ключа.
     
    500498До нажатия '''ОК''' проверьте новую пару командами из раздела '''Проверка сертификата и ключа'''. Сохраните прежние рабочие файлы до успешной проверки нового HTTPS-соединения.
    501499
    502 == 15. Удаление SSL-сертификата ==
     500=== 14.2 Удаление SSL-сертификата ===
    503501
    504502Подключитесь по SSH к плате SW-01. Данные по умолчанию:
     
    510508{{{ls -l /usr/share/sw/server.cer}}}
    511509
    512 Где:
    513  * {{{ls}}} - выводит сведения о файле;
    514  * {{{-l}}} - включает подробный формат с правами, владельцем, размером и временем изменения;
    515  * {{{/usr/share/sw/server.cer}}} - файл активного сертификата HTTPS.
    516 
    517510При необходимости создайте резервную копию сертификата:
    518511
     
    538531{{{reboot}}}
    539532
    540 {{{#!div class="wiki admonition warning"
     533{{{#!div style="background-color: #fff8dc; border: 1px solid #e0c66c; border-left: 5px solid #d39e00; padding: 8px 12px; margin: 10px 0"
    541534'''Внимание.''' \\
    542535Во время перезагрузки соединения с платой, включая SSH и веб-интерфейс, будут разорваны. Перед выполнением {{{reboot}}} убедитесь, что временное прекращение управления оборудованием допустимо.
     
    552545{{{reboot}}}
    553546
    554 == 16. Возможные ошибки ==
     547=== 14.3 Возможные ошибки ===
    555548
    556549'''OpenSSL не найден''' \\
     
    580573При необходимости повторно загрузите проверенные {{{sw01.crt}}} и {{{sw01.key}}} через HTTP.
    581574
    582 == 17. Результат настройки ==
    583 
    584 После выполнения инструкции плата SW-01 доступна по HTTPS по своему IP-адресу. Для подтверждения подлинности используется сертификат ECDSA P-256, подписанный локальным УЦ, а закрытый ключ платы хранится в незашифрованном формате PKCS!#8 PEM, который практически проверен на совместимость с SW-01.
     575== 15. Результат настройки ==
     576
     577После выполнения инструкции плата SW-01 доступна по HTTPS по своему IP-адресу. Для подтверждения подлинности используется сертификат ECDSA P-256, подписанный локальным УЦ, а закрытый ключ платы хранится в незашифрованном формате PKCS!#8 PEM.
    585578
    586579Установка корневого сертификата локального УЦ позволяет Windows и браузеру проверить сертификат платы без предупреждения о неизвестном издателе. Закрытый ключ УЦ при этом остаётся только у администратора и не передаётся в блок. Работа HTTPS проверяется для TLS 1.2 и TLS 1.3 с помощью OpenSSL и браузера.
    587 ----
     580
     581----
     582
    588583[[wiki:Examples3u|Примеры настройки аппаратуры MC04-DSL-3U]]