Changes between Initial Version and Version 1 of Examples3uHttps


Ignore:
Timestamp:
Aug 25, 2026, 5:03:08 PM (6 days ago)
Author:
roman_zhur
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Examples3uHttps

    v1 v1  
     1[[wiki:Examples3u|Примеры настройки аппаратуры MC04-DSL-3U]]
     2[[PageOutline(1-10, Содержание:)]]
     3== 1. Короткая инструкция ==
     4
     5
     6
     7Сертификат и ключ загружаются в веб-интерфейсе блока MC04-DSL-3U на вкладке '''Разное''' в пункте '''Сертификат'''. Сертификат должен быть выпущен с конкретным IP-адресом платы SW-01.
     8Для получения сертификата и ключа обратитесь к администратору Вашей сети.
     9Если вы хотите самостоятельно выпустить сертификат, то ниже представлена полная инструкция.
     10
     11== 2. Общая информация ==
     12
     13HTTPS (Hypertext Transfer Protocol Secure) - защищённый вариант протокола HTTP. При работе по HTTPS данные между браузером и блоком MC04-DSL-3U передаются внутри TLS-соединения. TLS шифрует трафик, контролирует его целостность и позволяет браузеру проверить сертификат блока.
     14
     15В этой инструкции рассмотрена настройка HTTPS на плате SW-01 в составе блока MC04-DSL-3U. Сертификат выпускается только на IP-адрес платы SW-01.
     16
     17В инструкции описаны:
     18 * установка OpenSSL в Windows;
     19 * создание локального центра сертификации (УЦ);
     20 * создание закрытого ключа и сертификата платы SW-01;
     21 * проверка созданных файлов перед загрузкой;
     22 * загрузка сертификата и ключа через веб-интерфейс;
     23 * добавление корневого сертификата локального УЦ в доверенное хранилище Windows;
     24 * проверка HTTPS через браузер и OpenSSL;
     25 * удаление сертификата с платы.
     26
     27В примере используется следующая связка:
     28 * алгоритм закрытого ключа - ECDSA;
     29 * эллиптическая кривая - P-256 ({{{prime256v1}}}, также называется {{{secp256r1}}});
     30 * формат закрытого ключа платы - незашифрованный PKCS#8 в формате PEM;
     31 * алгоритм подписи сертификата - ECDSA с SHA-256;
     32 * формат сертификата - X.509 v3 в формате PEM;
     33 * версия защищённого протокола - TLS 1.2 или TLS 1.3.
     34
     35{{{#!div class="wiki admonition note"
     36'''Примечание.'''
     37Алгоритм сертификата и алгоритм шифрования TLS-трафика - разные параметры. ECDSA используется для подтверждения подлинности платы и цифровой подписи. После установления соединения прикладные данные шифруются согласованным набором TLS, например AES-GCM или ChaCha20-Poly1305.
     38}}}
     39
     40
     41== 3. Подготовка ==
     42
     43Для выполнения настройки потребуются:
     44 * компьютер с Windows;
     45 * доступ к веб-интерфейсу блока MC04-DSL-3U;
     46 * IP-адрес платы SW-01;
     47 * OpenSSL с интерфейсом командной строки;
     48 * возможность подключиться к плате по HTTP или SSH для восстановления доступа при ошибке;
     49 * права на добавление сертификата в хранилище текущего пользователя Windows.
     50
     51В командах этой инструкции используется IP-адрес {{{192.168.20.39}}}. Замените его на фактический IP-адрес вашей платы SW-01.
     52
     53{{{#!div class="wiki admonition warning"
     54'''Внимание.'''
     55До загрузки сертификата убедитесь, что у вас сохраняется альтернативный доступ к плате по HTTP или SSH. Ошибка в сертификате или закрытом ключе может привести к невозможности открыть веб-интерфейс по HTTPS.
     56}}}
     57
     58
     59{{{#!div class="wiki admonition warning"
     60'''Внимание.'''
     61Плата SW-01 не поддерживает зашифрованные закрытые ключи. Попытка загрузить ключ с заголовком {{{-----BEGIN ENCRYPTED PRIVATE KEY-----}}} приводит к перезагрузке платы. Используйте только незашифрованный ключ PKCS#8 в формате PEM с заголовком {{{-----BEGIN PRIVATE KEY-----}}}.
     62}}}
     63
     64
     65== 4. Установка OpenSSL ==
     66
     67Для создания сертификата можно использовать любое программное обеспечение, способное создать сертификат X.509 и соответствующий ему закрытый ключ в требуемом формате.
     68
     69В настоящем примере используется OpenSSL для Windows в сборке Shining Light Productions. Установочный пакет можно скачать на странице [https://slproweb.com/products/Win32OpenSSL.html Win32/Win64 OpenSSL Installer for Windows], но вы можете использовать любую другую программу или сборку OpenSSL. При использовании другой программы команды могут отличаться, однако параметры создаваемого сертификата и ключа должны соответствовать требованиям этой инструкции.
     70
     71После установки откройте командную строку Windows. Для этого нажмите {{{Win-R}}}, введите {{{cmd}}} и нажмите Enter.
     72
     73Проверьте доступность OpenSSL командой:
     74{{{openssl version}}}
     75
     76Команда {{{openssl}}} запускает программу OpenSSL, а подкоманда {{{version}}} выводит её версию. Приведённые далее команды рассчитаны на OpenSSL 3.5 и совместимы с OpenSSL 4.x.
     77
     78Если Windows выводит сообщение, что команда {{{openssl}}} не найдена, временно добавьте каталог программы в переменную {{{PATH}}} текущего окна CMD:
     79{{{set "PATH=C:\Program Files\OpenSSL-Win64\bin;%PATH%"}}}
     80
     81Где:
     82 * {{{set}}} - задаёт переменную среды в текущем окне CMD;
     83 * {{{PATH}}} - список каталогов, в которых Windows ищет исполняемые файлы;
     84 * {{{C:\Program Files\OpenSSL-Win64\bin}}} - стандартный каталог {{{openssl.exe}}} для 64-разрядной сборки;
     85 * {{{%PATH%}}} - сохраняет остальные каталоги, которые уже содержались в {{{PATH}}}.
     86
     87Изменение действует только до закрытия текущего окна CMD. Если OpenSSL установлен в другом каталоге, укажите фактический путь к папке {{{bin}}}.
     88
     89Повторно выполните:
     90{{{openssl version}}}
     91
     92[[Image(настройка HTTPS ред-01.png, align=center)]]
     93== 5. Создание рабочего каталога ==
     94
     95Создайте отдельный каталог для файлов УЦ (Удостоверяющий центр) и платы:
     96{{{mkdir "%USERPROFILE%\equipment-certificates"}}}
     97
     98Где:
     99 * {{{mkdir}}} - создаёт каталог;
     100 * {{{%USERPROFILE%}}} - системная переменная с путём к профилю текущего пользователя Windows;
     101 * {{{equipment-certificates}}} - название рабочего каталога.
     102
     103Перейдите в созданный каталог:
     104{{{cd /d "%USERPROFILE%\equipment-certificates"}}}
     105
     106Все последующие команды выполняйте в этом каталоге.
     107[[Image(настройка HTTPS ред-02.png, align=center)]]
     108== 6. Создание локального центра сертификации ==
     109
     110Локальный центр сертификации нужен для того, чтобы браузер мог проверить сертификат SW-01 без обращения к публичному центру сертификации. Закрытый ключ УЦ хранится только на компьютере администратора и не загружается в плату.
     111
     112=== 6.1. Создание закрытого ключа УЦ ===
     113
     114{{{#!div class="wiki admonition warning"
     115'''Внимание.'''
     116Файлы {{{mc04-ca.key}}} и {{{sw01.key}}} являются закрытыми ключами.
     117Любой человек, получивший закрытый ключ платы, сможет выдавать себя за эту плату. Компрометация ключа локального УЦ позволит выпускать сертификаты, которым будут доверять компьютеры с установленным корневым сертификатом этого УЦ.
     118}}}
     119
     120
     121Введите команду, которая создаёт защищённый паролем закрытый ключ локального центра сертификации на основе алгоритма ECDSA P‑256 и сохраняет его в файл {{{mc04-ca.key}}}:
     122
     123{{{openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -aes-256-cbc -out mc04-ca.key}}}
     124
     125OpenSSL запросит пароль для защиты ключа. Введите стойкий пароль и сохраните его в защищённом месте. При вводе пароля символы в CMD не отображаются - это нормальное поведение.
     126
     127Ключ УЦ защищается паролем, потому что он используется вручную при выпуске сертификатов. Ключ SW-01, напротив, должен загружаться сервером автоматически после включения платы, поэтому его нельзя защитить паролем.
     128
     129Проверьте первую строку ключа УЦ:
     130{{{findstr /B /L /C:"-----BEGIN" mc04-ca.key}}}
     131
     132Ожидаемый результат:
     133{{{
     134-----BEGIN ENCRYPTED PRIVATE KEY-----
     135}}}
     136
     137'''Этот зашифрованный ключ предназначен только для локального УЦ и не загружается в SW-01.'''
     138[[Image(настройка HTTPS ред-03.png, align=center)]]
     139=== 6.2. Создание корневого сертификата УЦ ===
     140
     141Введите команду:
     142{{{openssl req -new -x509 -key mc04-ca.key -out mc04-ca.crt -days 3650 -sha256 -subj "/CN=MC04-DSL-3U Local CA" -addext "basicConstraints=critical,CA:TRUE,pathlen:0" -addext "keyUsage=critical,keyCertSign,cRLSign" -addext "subjectKeyIdentifier=hash"}}}
     143
     144Введите пароль закрытого ключа УЦ (mc04-ca.key), который вы вводили на предыдущем шаге.
     145
     146Параметры команды:
     147 * {{{req}}} - работает с запросами на сертификат и позволяет создавать самоподписанные сертификаты;
     148 * {{{-new}}} - создаёт новый объект;
     149 * {{{-x509}}} - вместо запроса создаёт самоподписанный сертификат X.509;
     150 * {{{-key mc04-ca.key}}} - подписывает сертификат закрытым ключом УЦ;
     151 * {{{-out mc04-ca.crt}}} - сохраняет корневой сертификат в файл {{{mc04-ca.crt}}};
     152 * {{{-days 3650}}} - задаёт срок действия 3650 дней, то есть приблизительно 10 лет;
     153 * {{{-sha256}}} - использует SHA-256 при формировании подписи;
     154 * {{{-subj}}} - задаёт имя субъекта без интерактивного опроса;
     155 * {{{/CN=MC04-DSL-3U Local CA}}} - присваивает УЦ понятное отображаемое имя;
     156 * {{{basicConstraints=critical,CA:TRUE}}} - отмечает сертификат как сертификат УЦ;
     157 * {{{pathlen:0}}} - запрещает создавать подчинённые УЦ; этот УЦ должен подписывать только конечные сертификаты оборудования;
     158 * {{{keyUsage=critical,keyCertSign,cRLSign}}} - разрешает ключу подписывать сертификаты и списки отзыва;
     159 * {{{subjectKeyIdentifier=hash}}} - добавляет идентификатор открытого ключа УЦ.
     160
     161Срок действия УЦ выбран больше срока действия сертификата платы, потому что сертификат платы должен оставаться проверяемым в течение всего своего срока. Истечение корневого сертификата потребует заменить корневой сертификат в Windows и перевыпустить сертификаты оборудования.
     162
     163Проверьте созданный сертификат:
     164{{{openssl x509 -in mc04-ca.crt -noout -subject -issuer -dates -text}}}
     165
     166У самоподписанного корневого сертификата значения {{{subject}}} и {{{issuer}}} должны совпадать.
     167[[Image(настройка HTTPS ред-04.png, align=center)]]
     168== 7. Создание закрытого ключа SW-01 ==
     169
     170Создайте ключ платы:
     171{{{openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -out sw01.key}}}
     172
     173Команда создаёт закрытый ключ ECDSA P‑256 в незашифрованном формате PKCS#8 и сохраняет его в файл {{{sw01.key}}}.
     174
     175Проверьте заголовок ключа:
     176{{{findstr /B /L /C:"-----BEGIN" sw01.key}}}
     177
     178Ожидаемый результат:
     179{{{
     180-----BEGIN PRIVATE KEY-----
     181}}}
     182
     183Дополнительно проверьте структуру ключа:
     184{{{openssl pkey -in sw01.key -check -noout}}}
     185
     186Ожидаемый результат:
     187{{{
     188Key is valid
     189}}}
     190
     191Если OpenSSL запрашивает пароль, был создан зашифрованный ключ. Такой файл загружать в SW-01 нельзя.
     192[[Image(настройка HTTPS ред-05.png, align=center)]]
     193== 8. Создание запроса на сертификат SW-01 ==
     194
     195Введите команду, заменив {{{192.168.20.39}}} на фактический IP-адрес платы:
     196
     197{{{openssl req -new -key sw01.key -out sw01.csr -sha256 -subj "/CN=192.168.20.39" -addext "subjectAltName=IP:192.168.20.39" -addext "basicConstraints=critical,CA:FALSE" -addext "keyUsage=critical,digitalSignature" -addext "extendedKeyUsage=serverAuth"}}}
     198
     199Параметры команды:
     200 * {{{req -new}}} - создаёт новый запрос на сертификат PKCS#10;
     201 * {{{-key sw01.key}}} - подписывает запрос закрытым ключом платы и помещает в запрос соответствующий открытый ключ;
     202 * {{{-out sw01.csr}}} - сохраняет запрос в файл {{{sw01.csr}}};
     203 * {{{-sha256}}} - использует SHA-256 для подписи запроса;
     204 * {{{-subj "/CN=192.168.20.39"}}} - задаёт IP-адрес как отображаемое имя владельца сертификата;
     205 * {{{subjectAltName=IP:192.168.20.39}}} - добавляет IP-адрес в расширение SAN;
     206 * {{{basicConstraints=critical,CA:FALSE}}} - запрещает использовать сертификат платы как сертификат УЦ;
     207 * {{{keyUsage=critical,digitalSignature}}} - разрешает ключу создавать цифровые подписи;
     208 * {{{extendedKeyUsage=serverAuth}}} - указывает, что сертификат предназначен для TLS-сервера.
     209
     210Именно {{{subjectAltName}}}, а не {{{CN}}}, используется браузером для проверки IP-адреса. Значение должно быть записано с типом {{{IP}}}.
     211
     212Проверьте запрос:
     213{{{openssl req -in sw01.csr -noout -verify -text}}}
     214
     215В выводе должны присутствовать IP-адрес платы и расширение {{{TLS Web Server Authentication}}} либо {{{serverAuth}}}.
     216[[Image(настройка HTTPS ред-06.png, align=center)]]
     217== 9. Выпуск сертификата SW-01 ==
     218
     219Подпишите запрос локальным УЦ:
     220{{{openssl x509 -req -in sw01.csr -CA mc04-ca.crt -CAkey mc04-ca.key -CAcreateserial -out sw01.crt -days 365 -sha256 -copy_extensions copy}}}
     221
     222Введите пароль закрытого ключа УЦ (mc04-ca.key).
     223
     224Параметры команды:
     225 * {{{x509 -req}}} - создаёт сертификат на основании запроса;
     226 * {{{-in sw01.csr}}} - указывает запрос платы;
     227 * {{{-CA mc04-ca.crt}}} - указывает сертификат выпускающего УЦ;
     228 * {{{-CAkey mc04-ca.key}}} - указывает закрытый ключ УЦ;
     229 * {{{-CAcreateserial}}} - создаёт файл с серийным номером сертификата, если он ещё не существует;
     230 * {{{-out sw01.crt}}} - сохраняет сертификат платы в файл {{{sw01.crt}}};
     231 * {{{-days 365}}} - задаёт срок действия один год;
     232 * {{{-sha256}}} - использует SHA-256 при подписи сертификата;
     233 * {{{-copy_extensions copy}}} - переносит из запроса проверенные расширения, включая IP-адрес и назначение {{{serverAuth}}}.
     234
     235Годовой срок действия ограничивает период использования одного ключа и заставляет регулярно проверять возможность обновления сертификата. Новый сертификат следует выпустить и загрузить до истечения текущего.
     236
     237После выполнения команды в каталоге также появится файл серийного номера УЦ. Его следует хранить вместе с файлами УЦ, чтобы серийные номера последующих сертификатов не повторялись.
     238[[Image(настройка HTTPS ред-07.png, align=center)]]
     239== 10. Проверка сертификата и ключа ==
     240
     241'''До загрузки в SW-01 выполните все проверки из этого раздела.'''
     242
     243=== 10.1. Проверка цепочки доверия ===
     244
     245{{{openssl verify -CAfile mc04-ca.crt sw01.crt}}}
     246
     247Где:
     248 * {{{verify}}} - проверяет сертификат;
     249 * {{{-CAfile mc04-ca.crt}}} - использует созданный корневой сертификат как доверенный;
     250 * {{{sw01.crt}}} - проверяемый сертификат платы.
     251
     252Ожидаемый результат:
     253{{{
     254sw01.crt: OK
     255}}}
     256
     257=== 10.2. Проверка IP-адреса ===
     258
     259{{{openssl x509 -in sw01.crt -noout -checkip 192.168.20.39}}}
     260
     261Параметр {{{-checkip}}} проверяет наличие указанного IP-адреса в {{{subjectAltName}}}.
     262
     263Ожидаемый результат:
     264{{{
     265IP 192.168.20.39 does match certificate
     266}}}
     267
     268=== 10.3. Проверка срока и назначения ===
     269
     270{{{openssl x509 -in sw01.crt -noout -subject -issuer -dates -ext subjectAltName,basicConstraints,keyUsage,extendedKeyUsage}}}
     271
     272Команда показывает владельца, издателя, срок действия и расширения сертификата. Проверьте следующие значения:
     273 * владельцем является IP-адрес платы;
     274 * издателем является {{{MC04-DSL-3U Local CA}}};
     275 * IP-адрес присутствует как {{{IP Address}}};
     276 * {{{CA:FALSE}}};
     277 * {{{Digital Signature}}};
     278 * {{{TLS Web Server Authentication}}}.
     279
     280=== 10.4. Проверка соответствия ключа сертификату ===
     281
     282Получите открытый ключ из закрытого ключа платы:
     283
     284{{{openssl pkey -in sw01.key -pubout -out sw01-key.pub}}}
     285
     286Где:
     287 * {{{pkey}}} - обрабатывает ключ;
     288 * {{{-pubout}}} - выводит только открытую часть;
     289 * {{{-out sw01-key.pub}}} - сохраняет её в отдельный файл.
     290
     291Получите открытый ключ из сертификата:
     292
     293{{{openssl x509 -in sw01.crt -pubkey -noout -out sw01-cert.pub}}}
     294
     295Где:
     296 * {{{-pubkey}}} - извлекает открытый ключ из сертификата;
     297 * {{{-noout}}} - не выводит сам сертификат;
     298 * {{{-out sw01-cert.pub}}} - сохраняет ключ в файл.
     299
     300Сравните файлы:
     301
     302{{{fc /b sw01-key.pub sw01-cert.pub}}}
     303
     304Где:
     305 * {{{fc}}} - стандартная команда Windows для сравнения файлов;
     306 * {{{/b}}} - выполняет побайтовое сравнение.
     307
     308Если ключ соответствует сертификату, CMD сообщит, что различия не найдены.
     309[[Image(настройка HTTPS ред-08.png, align=center)]]
     310== 11. Загрузка сертификата в SW-01 ==
     311
     312Сертификат и ключ загружаются в веб-интерфейсе блока MC04-DSL-3U на вкладке '''Разное''' в пункте '''Сертификат'''.
     313[[Image(настройка HTTPS ред-09.png, align=center)]]
     314
     315Откроется новое окно '''Информация о сертификате SSL''', в котором нужно нажать '''Загрузить новый сертификат'''.
     316[[Image(настройка HTTPS ред-010.png, align=center)]]
     317
     318Появится окно '''Загрузка сертификатов SSL'''.
     319[[Image(настройка HTTPS ред-011.png, align=center)]]
     320
     321Откройте файл {{{sw01.crt}}} в текстовом редакторе. Скопируйте его полностью, включая строки:
     322
     323{{{
     324-----BEGIN CERTIFICATE-----
     325...
     326-----END CERTIFICATE-----
     327}}}
     328
     329Вставьте содержимое в поле '''SSL сертификат платы (в формате PEM)'''.
     330
     331Откройте файл {{{sw01.key}}} и скопируйте его полностью, включая строки:
     332
     333{{{
     334-----BEGIN PRIVATE KEY-----
     335...
     336-----END PRIVATE KEY-----
     337}}}
     338
     339Вставьте содержимое в поле '''Ключ сертификата платы (в формате PEM)'''.
     340
     341Проверьте, что:
     342 * сертификат и ключ вставлены в соответствующие поля;
     343 * строки {{{BEGIN}}} и {{{END}}} скопированы полностью;
     344 * перед {{{BEGIN}}} нет дополнительного текста;
     345 * используется незашифрованный ключ с заголовком {{{BEGIN PRIVATE KEY}}}.
     346
     347{{{#!div class="wiki admonition warning"
     348'''Внимание.'''
     349После нажатия '''ОК''' сертификат и ключ немедленно загружаются в плату. Не нажимайте '''ОК''', пока не выполнены все проверки предыдущего раздела.
     350}}}
     351
     352
     353Нажмите '''ОК'''.
     354
     355После этого окно должно обновиться. В нем появится информация о добавленном сертификате.
     356
     357Также нажмите '''ОК'''.
     358[[Image(настройка HTTPS ред-012.png, align=center)]]
     359
     360После применения настроек откройте:
     361{{{https://192.168.20.39}}}
     362
     363Если корневой сертификат локального УЦ ещё не установлен в Windows, браузер покажет предупреждение о недоверенном издателе. Это не означает, что HTTPS не работает: соединение может быть зашифровано, но браузер пока не доверяет созданному УЦ.
     364
     365== 12. Установка корневого сертификата ==
     366
     367Корневой сертификат можно добавить либо в доверенное хранилище Windows, либо в локальное хранилище отдельного браузера. В первом случае сертификату будут доверять приложения и браузеры, использующие системное хранилище Windows. Во втором случае доверие будет действовать только в том браузере и профиле, в которые импортирован сертификат, не затрагивая Windows, другие браузеры и приложения. Например, Mozilla Firefox позволяет импортировать корневой сертификат в собственное хранилище выбранного профиля.
     368
     369Перед установкой выведите SHA-256-отпечаток корневого сертификата:
     370{{{openssl x509 -in mc04-ca.crt -noout -fingerprint -sha256}}}
     371
     372Где:
     373 * {{{-fingerprint}}} - выводит отпечаток сертификата;
     374 * {{{-sha256}}} - вычисляет отпечаток с помощью SHA-256.
     375
     376Отпечаток позволяет убедиться, что устанавливается именно созданный вами сертификат. Если файл передавался на другой компьютер, сравните отпечаток с исходным по независимому каналу.
     377
     378=== 12.1. Установка корневого сертификата в хранилище Windows через CMD ===
     379
     380Установите корневой сертификат в хранилище текущего пользователя:
     381{{{certutil -user -addstore Root mc04-ca.crt}}}
     382
     383Где:
     384 * {{{certutil}}} - штатная утилита Windows для работы с сертификатами;
     385 * {{{-user}}} - выбирает хранилище текущего пользователя, а не всего компьютера;
     386 * {{{-addstore}}} - добавляет сертификат в хранилище;
     387 * {{{Root}}} - хранилище доверенных корневых центров сертификации;
     388 * {{{mc04-ca.crt}}} - добавляемый открытый сертификат УЦ.
     389
     390{{{#!div class="wiki admonition warning"
     391'''Внимание.'''
     392Установка корневого сертификата локального УЦ в доверенное хранилище Windows означает, что операционная система и использующие это хранилище приложения будут доверять всем сертификатам, подписанным данным УЦ. Если закрытый ключ УЦ будет скомпрометирован, злоумышленник сможет выпускать сертификаты, которым этот компьютер будет доверять.
     393
     394Используйте отдельный УЦ только для оборудования MC04-DSL-3U, защищайте его закрытый ключ паролем, не передавайте ключ на платы и устанавливайте корневой сертификат только на компьютеры, с которых выполняется администрирование оборудования. По возможности используйте хранилище текущего пользователя, а не хранилище всего компьютера.
     395}}}
     396
     397
     398В хранилище Windows устанавливается только файл {{{mc04-ca.crt}}}. Нельзя устанавливать или передавать файл {{{mc04-ca.key}}}.
     399
     400Если ключ УЦ утрачен или скомпрометирован:
     401 * создайте новый УЦ;
     402 * выпустите новые сертификаты для оборудования;
     403 * удалите старый корневой сертификат из доверенного хранилища Windows;
     404 * замените сертификаты на всех платах.
     405
     406Для просмотра сертификатов текущего пользователя выполните:
     407
     408{{{certmgr.msc}}}
     409
     410В открывшемся окне перейдите в '''Доверенные корневые центры сертификации -> Сертификаты'''. Здесь можно найти {{{MC04-DSL-3U Local CA}}}, проверить его отпечаток или удалить сертификат, когда доверие к данному УЦ больше не требуется.
     411
     412=== 12.2. Установка корневого сертификата только в браузер ===
     413'''на примере Mozila Firefox'''
     414
     415Если сертификат должен использоваться только в браузер, его можно импортировать в собственное хранилище выбранного профиля браузера. В этом случае доверие к локальному УЦ не добавляется в Windows и не распространяется на другие браузеры и приложения.
     416
     417Приведем пример для браузера Firefox.
     418
     419Для установки сертификата:
     420 1. Откройте Mozilla Firefox.
     421 1. Откройте меню и выберите '''Настройки -> Приватность и защита'''.
     422 1. Перейдите к разделу '''Сертификаты''' и нажмите '''Просмотр сертификатов'''.
     423 1. В окне управления сертификатами откройте вкладку '''Центры сертификации'''.
     424 1. Нажмите '''Импортировать''' и выберите файл {{{mc04-ca.crt}}}.
     425 1. Разрешите доверять этому центру сертификации для идентификации веб-сайтов и подтвердите импорт.
     426 1. Закройте и заново откройте Firefox, затем перейдите на {{{https://192.168.20.39}}}.
     427
     428{{{#!div class="wiki admonition warning"
     429'''Внимание.'''
     430Устанавливайте корневой сертификат {{{mc04-ca.crt}}}, а не сертификат платы {{{sw01.crt}}}. Не импортируйте в браузер или хранилище Windows закрытые ключи {{{mc04-ca.key}}} и {{{sw01.key}}}.
     431}}}
     432
     433
     434Официальное описание настройки локальных центров сертификации приведено в справке [https://support.mozilla.org/kb/setting-certificate-authorities-firefox Mozilla Firefox].
     435
     436== 13. Проверка HTTPS ==
     437
     438=== 13.1. Проверка через браузер ===
     439
     440Откройте:
     441
     442{{{https://192.168.20.39}}}
     443
     444Проверьте сертификат через сведения о защищённом соединении в браузере:
     445 * сертификат выдан для IP-адреса платы;
     446 * издателем является {{{MC04-DSL-3U Local CA}}};
     447 * срок действия не истёк;
     448 * браузер не сообщает о несоответствии IP-адреса.
     449
     450=== 13.2. Проверка TLS 1.3 ===
     451
     452В CMD выполните:
     453
     454{{{echo. | openssl s_client -connect 192.168.20.39:443 -tls1_3 -brief}}}
     455
     456Параметры команды:
     457 * {{{echo.}}} - передаёт пустую строку и позволяет завершить {{{s_client}}} после проверки;
     458 * символ {{{|}}} передаёт вывод первой команды на вход второй;
     459 * {{{s_client}}} - запускает тестовый TLS-клиент OpenSSL;
     460 * {{{-connect 192.168.20.39:443}}} - подключается к HTTPS-порту платы;
     461 * {{{-tls1_3}}} - разрешает только TLS 1.3;
     462 * {{{-brief}}} - выводит сокращённую информацию о соединении.
     463
     464При успешной проверке вывод содержит:
     465
     466{{{
     467CONNECTION ESTABLISHED
     468Protocol version: TLSv1.3
     469}}}
     470
     471Строка {{{Ciphersuite}}} показывает согласованный набор шифров. Строка {{{Signature type}}} показывает алгоритм подписи сертификата, а {{{Peer Temp Key}}} - алгоритм временного обмена ключами.
     472
     473Также можно проверить работу TLS 1.2 командой:
     474{{{echo. | openssl s_client -connect 192.168.20.39:443 -tls1_2 -brief}}}
     475
     476Параметр {{{-tls1_2}}} принудительно выбирает TLS 1.2. Успешное соединение подтверждает возможность работы клиентов, которые ещё не используют TLS 1.3.
     477== 14. Замена сертификата ==
     478
     479До окончания срока действия создайте новый ключ и новый запрос, выпустите новый сертификат и повторите загрузку. Создание нового ключа предпочтительнее повторного использования старого: это ограничивает последствия возможной незамеченной компрометации предыдущего ключа.
     480
     481До нажатия '''ОК''' проверьте новую пару командами из раздела '''Проверка сертификата и ключа'''. Сохраните прежние рабочие файлы до успешной проверки нового HTTPS-соединения.
     482
     483== 15. Удаление SSL-сертификата ==
     484
     485Подключитесь по SSH к плате SW-01. Данные по умолчанию:
     486 * логин - {{{root}}};
     487 * пароль - {{{<пусто>}}}.
     488
     489Убедитесь, что файл сертификата существует:
     490
     491{{{ls -l /usr/share/sw/server.cer}}}
     492
     493Где:
     494 * {{{ls}}} - выводит сведения о файле;
     495 * {{{-l}}} - включает подробный формат с правами, владельцем, размером и временем изменения;
     496 * {{{/usr/share/sw/server.cer}}} - файл активного сертификата HTTPS.
     497
     498При необходимости создайте резервную копию сертификата:
     499
     500{{{cp /usr/share/sw/server.cer /usr/share/sw/server.cer.bak}}}
     501
     502Где:
     503 * {{{cp}}} - копирует файл;
     504 * первый путь - исходный сертификат;
     505 * второй путь - резервная копия.
     506
     507Удалите сертификат:
     508
     509{{{rm /usr/share/sw/server.cer}}}
     510
     511Где:
     512 * {{{rm}}} - безвозвратно удаляет указанный файл;
     513 * {{{/usr/share/sw/server.cer}}} - удаляемый сертификат HTTPS.
     514
     515Закрытый ключ {{{/usr/share/sw/server.key}}} этой командой не удаляется.
     516
     517Для применения изменений перезагрузите плату:
     518
     519{{{reboot}}}
     520
     521{{{#!div class="wiki admonition warning"
     522'''Внимание.'''
     523Во время перезагрузки соединения с платой, включая SSH и веб-интерфейс, будут разорваны. Перед выполнением {{{reboot}}} убедитесь, что временное прекращение управления оборудованием допустимо.
     524}}}
     525
     526
     527Для восстановления сертификата из созданной резервной копии подключитесь по SSH и выполните:
     528
     529{{{cp /usr/share/sw/server.cer.bak /usr/share/sw/server.cer}}}
     530
     531Затем снова перезагрузите плату:
     532
     533{{{reboot}}}
     534
     535== 16. Возможные ошибки ==
     536
     537'''OpenSSL не найден'''
     538Если CMD выводит сообщение {{{openssl is not recognized}}}, проверьте каталог установки и добавьте его папку {{{bin}}} в {{{PATH}}} текущего окна CMD.
     539
     540'''Ключ начинается с ENCRYPTED PRIVATE KEY'''
     541Такой ключ защищён паролем и не поддерживается SW-01. Не загружайте его. Создайте новый незашифрованный ключ командой из раздела '''Создание закрытого ключа SW-01'''.
     542
     543{{{#!div class="wiki admonition danger"
     544'''Опасность.'''
     545Практически установлено, что попытка загрузки зашифрованного закрытого ключа приводит к перезагрузке SW-01.
     546}}}
     547
     548
     549'''Сертификат и ключ не соответствуют друг другу'''
     550Повторите извлечение открытых ключей и сравнение через {{{fc /b}}}. Загружайте только ту пару, для которой различия не обнаружены.
     551
     552'''Браузер сообщает о несоответствии адреса'''
     553Проверьте IP-адрес в {{{subjectAltName}}} командой {{{openssl x509 -checkip}}}. Подключайтесь к тому же IP-адресу, который указан в сертификате.
     554
     555'''Браузер не доверяет сертификату'''
     556Убедитесь, что в хранилище текущего пользователя установлен именно {{{mc04-ca.crt}}}, а не сертификат платы. Проверьте SHA-256-отпечаток УЦ. Перезапустите браузер.
     557
     558'''HTTPS не открывается после загрузки'''
     559Проверьте:
     560 * доступность платы по HTTP или SSH;
     561 * наличие строк {{{BEGIN}}} и {{{END}}};
     562 * отсутствие парольной защиты ключа;
     563 * соответствие ключа сертификату;
     564 * доступность TCP-порта 443;
     565 * правильность IP-адреса.
     566
     567При необходимости повторно загрузите проверенные {{{sw01.crt}}} и {{{sw01.key}}} через HTTP.
     568
     569== 17. Результат настройки ==
     570
     571После выполнения инструкции плата SW-01 доступна по HTTPS по своему IP-адресу. Для подтверждения подлинности используется сертификат ECDSA P-256, подписанный локальным УЦ, а закрытый ключ платы хранится в незашифрованном формате PKCS#8 PEM, который практически проверен на совместимость с SW-01.
     572
     573Установка корневого сертификата локального УЦ позволяет Windows и браузеру проверить сертификат платы без предупреждения о неизвестном издателе. Закрытый ключ УЦ при этом остаётся только у администратора и не передаётся в блок. Работа HTTPS проверяется для TLS 1.2 и TLS 1.3 с помощью OpenSSL и браузера.
     574
     575----
     576[[wiki:Examples3u|Примеры настройки аппаратуры MC04-DSL-3U]]