===== Замена само-подписанного SSL-сертификата на СХД HPE ЗPAR 7200 ===== {{:hewlett-packard:pasted:20180317-203350.png }} Действующий цифровой сертификат, установленный на СХД **HPE ЗPAR 7200** может потребоваться в случае необходимости подключения к СХД консолями администрирования. И если консоль **HP 3PAR Management Console** (**InFormMC**), представляющая собой отдельное приложение на платформах Windows и Linux, позволяет подключиться к СХД при условии того, что срок действия сертификата истёк, то модерновая веб-консоль из продукта **HPE 3PAR StoreServ Management Console Server** (**SSMC**) уже не даст подключиться к СХД и потребует наличия валидного сертификата на СХД. \\ ==== Получаем текущую информацию ==== Подключаемся к СХД по протоколу **SSH**, используя для аутентификации учётную запись ''3paradm'' и выполняем используем вызов утилиты **showcert**, чтобы получить информацию о текущем установленном в СХД сертификате:
% showcert -text
Service:unified-server* Type:cert Commonname:HP 3PAR HP_3PAR 7200 1650000 Certificate: Data: Version: 1 (0x0) Serial Number: 0 (0x0) Signature Algorithm: sha1WithRSAEncryption Issuer: CN=HP 3PAR HP_3PAR 7200 1650000 Validity Not Before: Oct 22 09:04:52 2014 GMT Not After : Oct 21 09:04:52 2017 GMT Subject: CN=HP 3PAR HP_3PAR 7200 1650000 Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:cc:21:ad:d2:06:59:95:17:fc:75:95:17:fc:85: ... ... 04:b1:74:95:17:fc:25:a8:0c:90:c9:a9:d6:45:b5: 3c:9d Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption 23:c2:02:24:46:f2:8b:26:34:b0:9a:73:94:43:ca:cf:98:e2: ... ... f2:4b:2c:ef:68:8c:22:80:2f:e6:5a:96:a2:dc:8d:a0:4b:2c: a5:08:96:da
Как видно из нашего примера, сертификат просрочен, так как срок его действия кончился ''21.10.2017'' \\ ==== Создаём CSR-запрос ==== С помощью команды **createcert** мы можем либо сгенерировать новый само-подписанный сертификат, либо создать запрос на новый сертификат для отправки во внешний центр сертификации (например, в локальный доменный центр сертификации). Получить информацию о синтаксисте команды можно либо командой "''createcert -h''" (полная справка), либо просто вызвав утилиту без указания параметров (короткая подсказка по принимаемым опциям):
% createcert
createcert: Insufficient arguments SYNTAX createcert {-csr|-selfsigned} [-f] [-keysize ] [-days ] [] [] OPTIONS -f Creates without prompting user -csr Creates a certificate signing request -selfsigned Creates a self-signed certificate -keysize Specifies encryption key size in bits -days Specifies valid days -C Specifies country attribute -ST Specifies state attribute -L Specifies locality attribute -O Specifies organization attribute -OU Specifies organizational unit attribute -CN Specifies common name attribute -SAN Specifies the subject alternative name Save the file the CSR is written to Try 'createcert -h' for detailed information for options
Попробуем создать запрос (уберите переносы строк):
% createcert unified-server -csr -keysize 2048 `
 -C "RU" -ST "KOMI" -L "Syktyvkar" -O "IT Ltd." -OU "KOMI Branch" `
 -CN "3PAR01.holding.com"
Если требуется SAN-сертификат (с поддержкой альтернативных имён), то формат запроса будет содержать дополнительную опцию:
% createcert unified-server -csr -keysize 2048 `
 -C "RU" -ST "KOMI" -L "Syktyvkar" -O "IT Ltd." -OU "KOMI Branch" `
 -CN "3PAR01.holding.com" `
 -SAN DNS:3PAR01.holding.com,IP:10.10.2.100
В ответ утилита отдаст нам содержимое запроса, сохранив в СХД закрытый ключ, связанный с занным запросом:
-----BEGIN CERTIFICATE REQUEST-----
MIIDEDCCNVBAYTAlJVMQ0wCwAfgCAQAwgYoxCzAJBgYDVQQIEwRLT01JMRIwEAYD
...
...
3WN5I/+FXUn/evms18rEOct2rg1sZ2rEVX4b43i/XOsB6qo6GR2218g50nNQGy6I
VsRW9KObXqHHg3gyIdcQbBzuCK0=
-----END CERTIFICATE REQUEST-----
Запрос будет сохранён в СХД. Увидеть его можно командой **showcert**.
% showcert
Service Commonname Type Enddate Fingerprint unified-server* 3PAR01.holding.com csr -- 9a83890ec... unified-server* HP 3PAR HP_3PAR 7200 1650000 cert Oct 21 09:04:52 2017 GMT aa2bdcf08...
Повторно получить содержимое хранящегося в СХД запроса на сертификат можно будет так:
% showcert -service unified-server -type csr -pem
Service:unified-server* Type:csr Commonname:3PAR01.holding.com -----BEGIN CERTIFICATE REQUEST----- MIIDEDCCNVBAYTAlJVMQ0wCwAfgCAQAwgYoxCzAJBgYDVQQIEwRLT01JMRIwEAYD ... ... 3WN5I/+FXUn/evms18rEOct2rg1sZ2rEVX4b43i/XOsB6qo6GR2218g50nNQGy6I VsRW9KObXqHHg3gyIdcQbBzuCK0= -----END CERTIFICATE REQUEST-----
Сохраняем данное содержимое в текстовый файл с расширением **CSR** и передаём администратору Центра сертификации для получения сертификата \\ ==== Получаем PEM-сертификат из ЦС ==== Получаем из ЦС **PEM**-сертификат (в кодировке **Base-64**), который будет иметь примерно следующий вид: -----BEGIN CERTIFICATE----- MIIExDCAAAhWxDyTyCtCSPAACAACA6ygAwIBAgITEwACFTANBgkqhkiG9w0BAQsF ... ... vnOeY8QZAw5WlB5CwC3M4Rkf4q12Wfu3HS272M6drrCw9uwrWAIi5DsFywEh0l+j YwMFd6k+ETtYPlkvdCPJNxo/mPZxOJA7 -----END CERTIFICATE----- Если сертификат получен из ЦС в бинарном формате **DER** то сконвертировать в **PEM**-формат, понятный для 3PAR, можно так:
C:\Tools\OpenSSL>openssl x509 -in 3PAR.cer -inform d -out 3PAR.pem
В этой-же кодировке нам потребуется корневой сертификат ЦС. Если таких сертификатов несколько, то потребуются все сертификаты ЦС в цепочке до самого верхнего уровня. \\ ==== Импортируем корневые сертификаты ==== Теперь нужно отправить эти PEM-сертификаты в СХД Сделать этом ожно с помощью утилиты **importcert**. Чтобы получить справку по работе этой утилиты выполним:
% importcert -h
Импортируем, указав имя службы, а вместо имени файла, указывающего на бандл с сертификатами, указываем ключевое слово ''stdin'', которое значит то, что утилита запросит скопировать содержимое сертификатов в консоль. Сначала импортируем сертификат корневого ЦС
% importcert unified-server -ca "stdin"
Please paste the CA bundle for unified-server. Once finished, please press Enter twice.
После того, как появится выше указанный запрос на ввод сертификата, скопируем в консоль содержимое корневого сертификата (или нескольких, если у нас цепочка ЦС) нашего доменного ЦС, а затем два раза нажмём **Enter**
-----BEGIN CERTIFICATE-----
MIIERzCCAy+gAwIJZzANBgkqhkiBAgIQb63kBzI357tNm1kHSd0G9w0BAQsFADBh
...
...
ggO41r6bfOqZVEZyEQUWwq0y6qBZzjjID+5hub+dC8ENr5inENOlPyvGEi597+e2
lnsTLtptNzueffBzh6mss918TDLX0PxJWASqWVOkVWA7MyXrrgNTcDlFwA==
-----END CERTIFICATE-----
Появится запрос на подтверждение. Введём "**yes**"
Do you want to import these certificate(s) for unified-server service?
* stdin certificate authorities?
Continue importing signed certificate(s) (yes/no)? yes
% 
Проверим список сертификатов и убедимся в том, что на СХД теперь есть сертификат ЦС:
% showcert
Service Commonname Type Enddate Fingerprint cim* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a048730ccd... cli* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a048730ccd... wsapi* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a048730ccd... unified-server* 3PAR01.holding.com csr -- 9a83890ec0bb88e... unified-server* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a048730ccd...
\\ ==== Импортируем сертификат для СХД ==== Теперь аналогичным образом импортируем сертификат, выпущенный для СХД (без опции ''-ca'')
% importcert unified-server "stdin"
Please paste the Certificate for unified-server. Once finished, please press Enter twice.
После того, как появится выше указанный запрос на ввод сертификата, скопируем в консоль содержимое сертификата для СХД, а затем два раза нажмём **Enter**
-----BEGIN CERTIFICATE-----
MIIExDCAAAhWxDyTyCtCSPAACAACA6ygAwIBAgITEwACFTANBgkqhkiG9w0BAQsF
...
...
vnOeY8QZAw5WlB5CwC3M4Rkf4q12Wfu3HS272M6drrCw9uwrWAIi5DsFywEh0l+j
YwMFd6k+ETtYPlkvdCPJNxo/mPZxOJA7
-----END CERTIFICATE-----
Появится запрос на подтверждение. Введём "**yes**"
Do you want to import these certificate(s) for unified-server service?
* stdin as the service certificate?
Also the following services will be restarted if currently running:
  cim: manages communications with SMI-S clients

  wsapi: Web Services API server

Continue importing signed certificate(s) (yes/no)? yes
cimserver restarted
%
Снова проверим набор сертификатов, установленных в СХД:
% showcert
Service Commonname Type Enddate Fingerprint cim* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a04... cli* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a04... wsapi* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a04... unified-server* 3PAR01.holding.com cert Mar 15 15:07:29 2028 GMT 4b5a48a0... unified-server* KOMI CA rootca Jul 29 13:08:53 2036 GMT de473a04...
Сертификаты установлены. Однако это не всё. \\ ==== Доверие к сертификату в HP 3PAR Management Console ==== После установки на СХД сертификата, выданного каким-либо ЦС (не само-подписанного), мы можем столкнуться с проблемой при использовании некоторых инструментов управления СХД. Например, при попытке подключиться к СХД с помощью консоли **HP 3PAR Management Console** на платформе Windows, мы получим ошибку: ''Please upload a valid CA certificate under /InFormMC/security '' {{ :hewlett-packard:pasted:20180317-200922.png }} Проблема заключается в том, что теперь сертификат корневого ЦС нужно добавить в профиль текущего пользователя Windows в специальный файл в формате **Java Keystore** c именем **HP-3PAR-MC-TrustStore**, расположенный в каталоге: ''C:\Users\\InFormMC\security\'' Сделать это можно с помощью утилиты **keytool**, которая есть в составе **Java** (поставляется вместе с консолью) в каталоге ''C:\Program Files (x86)\3PAR\inform_mgmt_console\jre\bin\'' так, как это описано, например, в документе [[https://support.hpe.com/hpsc/doc/public/display?docId=emr_na-c04510558|emr_na-c04510558]] Однако можно с этим не заморачиваться, а просто скопировать сертификат корневого ЦС в формате **PEM** (в нашем случае это файл ''ROOT.pem'') в каталог ''C:\Users\\InFormMC\security\'' и попытаться снова запустить консоль. Обратите внимание на то, что при подключении к СХД мы должны указывать именно то имя, которое указано в ранее созданном нами сертификате, {{ :hewlett-packard:pasted:20180317-201108.png }} В случае успешного подключения к СХД мы получим информационное сообщение с предложением принять полученный от СХД сертификат. {{ :hewlett-packard:pasted:20180317-201915.png }} После нажатия **ОК** новый сертификат СХД будет автоматически добавлен в локальное хранилище доверенных сертификатов (''C:\Users\\InFormMC\security\HP-3PAR-MC-TrustStore''). А все последующие подключения с использованием **SSL** будут выполняться без каких-то дополнительных сообщений. \\ ==== Доверие к сертификату в HPE 3PAR StoreServ Management Console ==== Веб-консоль **HPE 3PAR StoreServ Management Console** (**SSMC**), которая сейчас позиционируется как основной базовы инструмент управления СХД 3PAR, устроена таким образом, что в случае недоверия к сертификату СХД, подключение будет безуспешным. На странице входа веб-консоли SSMC войдём в режим **Administrator Console**, установив соответствующий чекбокс в форме входа {{ :hewlett-packard:pasted:20180317-202006.png }} В этом режиме мы увидим то, что подключение SSMC к СХД не произведено, так как не прошла проверка сертификата из-за отсутствия сертификата корневого ЦС. {{ :hewlett-packard:pasted:20180317-202047.png }} Перейдя в меню **Actions** > **Manage certificates**, добавим содержимое PEM-сертификата ЦС, и нажмём **Validate** {{ :hewlett-packard:pasted:20180317-202452.png }} После успешной проверки сертификата ЦС, он будет добавлен в хранилище SSMC, после проверка сертификата, предоставляемого СХД должна пройти успешно и безопасное SSL-подключение па порт **5783** к СХД должно заработать: {{ :hewlett-packard:pasted:20180317-202701.png }} ---- Проверено на следующих конфигурациях: ^ Версия 3PAR OS ^ | 3.2.2 (MU3) | | 3.3.1 (MU5) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 16.03.2018 20:25 {{tag>HP HPE 3PAR "3PAR 7200" Storage InFormMC "Management Console" "3PAR Management Console" "3PAR StoreServ Management Console" SSMC SSL Certificate Security}} ~~DISCUSSION~~