PowerStore. Замена самозаверяющего сертификата управления кластером сертификатом, выданным внешним источником сертификатов
Summary: В этой статье приводятся пошаговые инструкции по замене самозаверяющего сертификата PowerStore, используемого для управления, сертификатом, выданным внешним источником сертификатов (CA). ...
Instructions
Примечание. В общем случае PowerStore не поддерживает возможность добавления сертификата графического пользовательского интерфейса сторонним CA. Форум браузера запрещает CA подписывать сертификаты с ограниченным IP-адресом в сертификате, так как частные IP-адреса включены в список ограничений и также требуются в сертификате PowerStore, CA отклонит запрос. Единственной возможностью получить сертификат, подписанный сторонним CA, является использование общедоступных IP-адресов, предоставленных поставщиком услуг Интернета или IANA для сети управления.
В этой статье описывается сертификат, подписанный частным корпоративным CA (например, с использованием OpenSSL, Microsoft CA или чего-то подобного)
В этой статье рассматривается PowerStoreOS 2.1. Более новые версии ОС PowerStore см. в разделе PowerStore. Создание и импорт подписанного сертификата управления HTTPS
Первоначальная поддержка замены самозаверяющих сертификатов PowerStore Management на сертификаты, выданные внешним CA, предоставляется в ограниченной форме в PowerStoreOS версии 2.1.
Помимо защиты доступа к пользовательскому интерфейсу (UI) с помощью HTTPS, сертификат управления кластером имеет и другие области применения, такие как различные внутренние коммуникации и т. д.
Во время первого внедрения этой функции, которая была реализована в PowerStoreOS версии 2.1, действуют следующие ограничения.
Эти ограничения применяются к PowerStoreOS версии 2.1.x в отношении импорта сертификатов сервера, подписанных частным CA. Эти ограничения не относятся к PowerStoreOS 3.0 и более поздних версий.
- Импорт сторонних сертификатов не поддерживается в
- Кластер с несколькими устройствами
- Кластер, который находится во взаимоотношениях репликации с другим кластером
- Кластер с настроенной SDNAS
- Единая система (файл + блок)
- После импорта стороннего сертификата для кластера возврат к исходному сертификату, подписанному CA, не поддерживается.
- Нет оповещений об истечении срока действия сертификата.
- Подлежащий импорту сертификат должен быть действителен не менее 30 дней.
- Импорт сторонних сертификатов не поддерживается с использованием пользовательского интерфейса PowerStore Manager.
- Импорт сторонних сертификатов поддерживается только для административного трафика (Management_HTTP), но не для каких-либо других служб (например, VASA, репликации и т. д.).
Важно! Ознакомьтесь с этими ограничениями и полностью изучите их, если используете PowerStoreOS 2.1. Не продолжайте работу, если ваша система относится к одной из перечисленных выше категорий.
Импорт сертификата, выданного внешним источником сертификатов, с помощью пользовательского интерфейса PowerStore Manager
Процедура интерфейса командной строки вручную требуется только для систем под управлением PowerStoreOS версии 2.1.
Для систем под управлением PowerStoreOS v3 и более поздних версий используйте пользовательский интерфейс PowerStore Manager для импорта сертификата.
Дополнительные сведения см. в Руководстве по настройке безопасности PowerStore.
Окно подписанного сертификата кластера в веб-интерфейсе пользователя PowerStore Manager:
Импорт сертификата, выданного внешним источником сертификатов, с помощью интерфейса командной строки
Шаг 1. Получение IPv4/IPv6-адреса кластера
Первым шагом является получение IPv4/IPv6-адреса кластера (управления). Этот IP-адрес встроен в текущий самозаверяющий сертификат управления. Это тот же IP-адрес, который вводится в браузере для подключения к пользовательскому интерфейсу PowerStore Manager.
Шаг 1a
Получение списка всех сертификатов.
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate show
# | id | type | service | is_current | is_valid
----+--------------------------------------+--------+------------------+------------+----------
1 | 00907634-b4eb-446a-a381-aae685bae066 | Server | Management_HTTP | yes | yes
2 | 9d0ec275-3688-4ae2-922b-639e1cfb0b88 | Server | VASA_HTTP | yes | yes
3 | c5f03cf7-fe1d-40bd-b6fb-7abba0c6026a | Client | Replication_HTTP | yes | yes
<trimmed for brevity>
Запишите значение в поле id сертификата, где указан сервисный Management_HTTP и тип Server.
Шаг 1b
Получите полные сведения о текущем самозаверяющем сертификате управления.
Выполните приведенную ниже команду, заменив id значением, полученным на шаге 1a.
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate -id 00907634-b4eb-446a-a381-aae685bae066 show
id = 00907634-b4eb-446a-a381-aae685bae066
type = Server
type_l10n = Server
service = Management_HTTP
service_l10n = Management_HTTP
is_current = yes
is_valid = yes
members:
subject = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
serial_number = 14daac34e1db4711
signature_algorithm = SHA384withRSA
issuer = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
valid_from = 11/16/21 23:16:33
valid_to = 10/30/89 23:16:33
public_key_algorithm = RSA
key_length = 4096
thumbprint_algorithm = SHA-256
thumbprint_algorithm_l10n = SHA-256
thumbprint = 279ea39ad7b8d2e0f3695a850a7d302e8318e080e1092fccb314c8f4f19e50a4
certificate = MIIFdDCCA1ygAwIBAgIIFNqsNOHbRxEwDQYJKoZIhvcNAQEMBQAwVzELMAkGA1UEBhMCVVMxCzAJBg
<trimmed for brevity>
Ar4eTY0aBe7R8fnSbg97EFqF+1gGhKlxrOU9AICgZJDh0PDQJRcYLFJBi36Ktt++mtRgpSig8VvypZ
depth = 2
subject_alternative_names =
subject = C=US+O=Dell+L=Hopkinton+OU=PowerStore+ST=Massachusetts+CN=ManagementHTTP.xxxxxxxxxxxx
serial_number = xxxxxxxxxxxxx
signature_algorithm = SHA256withRSA
issuer = CN=Dell EMC PowerStore CA E79NFK8T,O=Dell EMC,ST=MA,C=US
valid_from = 11/16/21 23:56:23
valid_to = 11/15/26 23:56:23
public_key_algorithm = RSA
key_length = 4096
thumbprint_algorithm = SHA-256
thumbprint_algorithm_l10n = SHA-256
thumbprint = eedf2f9c1d0f70f018857110e87cd122f4fa31140e694c30b5ea10398629dbf1
certificate = MIIFejCCA2KgAwIBAgIJANlUDR+8+78qMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAlVTMQswCQ
<trimmed for brevity>
ZTShTW0BFh3IeAgt23Tlhz+npsJNqbvxXB+8hXqvNWcpzeSluiUalqB3qU9MwCzwHpEkXqagzk8EZM
depth = 1
subject_alternative_names = aaa.bbb.ccc.ddd, 1111:2222:3333:4444:5555:6666:7777:8888
В выходных данных вы получите два сертификата: внутренний CA PowerStore и сертификат управления, подписанный этим внутренним CA.
В сертификате управления есть поле depth = 1, а поле subject_alternative_names заполняется IP-адресами IPv4 и IPv6.
Если вы используете IPv4 для управления кластером, вы должны видеть IP-адрес управления кластером IPv4 в качестве первого в поле subject_alternative_names (как в примере выше - aaa.bbb.ccc.ddd). Если для управления кластером используется протокол IPv6, запишите первый IPv6-адрес.
Шаг 2. Создание запроса на заверение сертификата (CSR)
Как создать CSR, который затем передается на подпись в центр сертификации.
Шаг 2a
Выполните следующую команду, чтобы получить справку по созданию CSR и ознакомиться с ее синтаксисом:
$ pstcli -u admin -p <password> -d <cluster_ip> help x509_certificate csr
x509_certificate csr -type { Server | Client | CA_Client_Validation | CA_Server_Validation } -service { Management_HTTP | Replication_HTTP | VASA_HTTP | Import_HTTP | LDAP_HTTP | Encrypt_HTTP | Syslog_HTTP } -dns_name <value>,...
-ip_addresses <value>,... -key_length <2048..4096> [ -scope <value> ] [ -common_name <value> ] [ -organizational_unit <value> ] [ -organization <value> ] [ -locality <value> ] [ -state <value> ] [ -country <value> ] [ { -passphrase
<value> | -passphraseSecure } ] [ -async ]
<trimmed for brevity>
Параметры, выделенные жирным шрифтом, являются обязательными, все остальные — необязательными. Проконсультируйтесь с администратором CA или PKI в соответствии с политикой сертификатов вашей компании использовать какое-либо из этих необязательных полей.
Шаг 2b
Создайте CSR, следуя приведенным выше рекомендациям.
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate csr -type Server -service Management_HTTP -dns_name "powerstoreXY.mycompany.com" -ip_addresses aaa.bbb.ccc.ddd -key_length 2048 -scope "External" -common_name "powerstoreXY.mycompany.com"
Выходные данные команды возвращают id и CSR в кодировке BASE64. Пример.
1 | 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd | Server | Management_HTTP | Management_HTTP | no | no | -----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
Скопируйте идентификатор, который вы получили в выходных данных (выделен жирным шрифтом выше), так как он потребуется для последующих действий.
Также необходимо отформатировать CSR (с помощью VIM или любого текстового редактора, например Блокнота). Первая строка должна иметь форму -----BEGIN CERTIFICATE REQUEST----- а последняя должна заканчиваться словами -----END CERTIFICATE REQUEST-----. Нигде не должно быть начальных или конечных пробелов.
Пример отформатированного CSR:
-----BEGIN CERTIFICATE REQUEST----- MIIDJTCCAg0CAQAwezF5MAkGA1UEBhMCVVMwCwYDVQQKEwREZWxsMBAGA1UEBxMJ SG9wa2ludG9uMBEGA1UECxMKUG93ZXJTdG9yZTAUBgNVBAgTDU1hc3NhY2h1c2V0 <trimmed for brevity> h4t6QVXny+nF25XASq49kuZ8aWA0aTwU8VN5lC0qbSA2Zy6uX8jPmf/ecGNSQzIc 6iDIm76HbL7UKlDecSmr7WiR5hZ9bP/zKxmkNlTN1viqtInGl+zZa6U= -----END CERTIFICATE REQUEST-----
Сохраните CSR в файле с содержательным именем. Например: powerstoreXY.csr
Шаг 2c (необязательно)
Если вы уверены, что ваш CSR отформатирован правильно, можете пропустить этот шаг.
Если вы хотите проверить его подлинность, вы можете использовать набор инструментов OpenSSL, чтобы убедиться, что он может быть прочитан и что данные в полях CSR выглядят правильно. Например, при использовании значений, приведенных в шаге 2b, поля, выделенные полужирным шрифтом, в CSR должно быть отражено, что:
$ openssl req -in powerstoreXY.csr -noout -text
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, O=Dell, L=Hopkinton, OU=PowerStore, ST=Massachusetts, CN=powerstoreXY.mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:af:cd:73:7a:d7:71:03:67:d6:f9:46:9f:aa:68:
<trimmed for brevity>
90:c4:68:44:71:bd:d7:64:65:81:36:90:2e:c2:15:
b8:f5
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:powerstoreXY.mycompany.com, IP Address:aaa.bbb.ccc.ddd, IP Address:1111:2222:3333:4444:5555:6666:7777:8888
Signature Algorithm: sha256WithRSAEncryption
15:f6:08:8e:ab:f6:07:91:82:ed:45:f0:d9:4d:8c:f5:c6:e3:
<trimmed for brevity
16:7d:6c:ff:f3:2b:19:a4:36:54:cd:d6:f8:aa:b4:89:c6:97:
ec:d9:6b:a5
Если все выглядит правильно, перейдите к следующему шагу.
Шаг 3 - Отправка CSR в частный CA на подпись
Этот шаг может отличаться в зависимости от поставщика. Цель состоит в том, чтобы отправить ваш CSR в выдающий центр сертификации, используя рекомендованные поставщиком процедуры для получения подписанного сертификата в кодировке BASE64.
Шаг 3a
Убедитесь, что новый выпущенный сертификат имеет кодировку BASE64. Убедитесь, что файл начинается с -----BEGIN CERTIFICATE----- и заканчивается -----END CERTIFICATE----- и содержит закодированные данные между ними.
$ cat powerstoreXY.cer -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF <trimmed for brevity> 7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9 l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE= -----END CERTIFICATE-----
Шаг 3b
Убедитесь, что полученный сертификат содержит значения атрибутов, запрошенных при создании запроса подписи сертификата, а именно DNS и IP-адреса в альтернативном имени субъекта. В зависимости от процедур, связанных с созданием и подписанием сертификата центром сертификации, сертификат может содержать или не содержать их.
$ openssl x509 -in powerstoreXY.cer -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
74:00:00:00:0e:12:88:4a:4e:80:85:cb:82:00:01:00:00:00:0e
Signature Algorithm: sha256WithRSAEncryption
Issuer: DC=com, DC=mycompany, CN=Issuing CA
Validity
Not Before: Nov 26 16:51:16 2021 GMT
Not After : Nov 26 16:51:16 2023 GMT
Subject: C=US, ST=Massachusetts, L=Hopkinton, O=Dell, OU=PowerStore, CN=powerstoreXY.mycompany.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:af:cd:73:7a:d7:71:03:67:d6:f9:46:9f:aa:68:
<trimmed for brevity>
90:c4:68:44:71:bd:d7:64:65:81:36:90:2e:c2:15:
b8:f5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:powerstoreXY.mycompany.com, IP Address:aaa.bbb.ccc.ddd, IP Address:1111:2222:3333:4444:5555:6666:7777:8888
X509v3 Subject Key Identifier:
1C:19:5D:DF:B4:F0:9F:B7:7B:2B:4A:0E:09:B3:C6:43:3E:CF:4D:4C
X509v3 Authority Key Identifier:
keyid:25:D0:D5:01:27:75:BD:08:FF:E7:FF:02:6C:CE:17:46:86:50:DD:71
X509v3 CRL Distribution Points:
Full Name:
URI:http://pki.mycompany.com/pki/Issuing%20CA.crl
Authority Information Access:
CA Issuers - URI:http://pki.mycompany.com/pki/ca-iss.mycompany.com_Issuing%20CA.crt
1.3.6.1.4.1.311.20.2:
...W.e.b.S.e.r.v.e.r
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
Signature Algorithm: sha256WithRSAEncryption
99:d9:99:a7:7a:b9:4a:e8:e3:66:ed:56:1f:6f:bc:71:b8:07:
<trimmed for brevity>
97:d7:56:a4:39:07:ea:6a:bf:7e:18:1a:30:d4:ff:be:e3:02:
52:d0:f8:d1:f8:fc:d4:31
Если вы не видите атрибуты DNS и IP, запрошенные в CSR, в альтернативном имени субъекта X509v3 сертификата (пример выделен жирным шрифтом выше), обратитесь к администратору ЦС по этому вопросу.
Не продолжайте, пока не убедитесь в наличии в сертификате необходимых атрибутов.
Шаг 3c
Этот шаг включает создание полной цепочки сертификатов в одном файле с кодировкой BASE64, который должен содержать сертификат PowerStore и сертификаты для каждого источника сертификатов в иерархии, участвующего в подписании сертификата.
Использование гипотетической инфраструктуры открытых ключей (PKI), состоящей из следующих объектов:
Корневой источник сертификатов, выдающий Leaf-сертификат источника сертификатов >>
Где
- Корневой источник сертификатов — это вершина иерархии, который подписывает и выдает сертификаты только для выдающих центров сертификации. Обычно он никогда не участвует в подписании сертификатов для конечных точек.
- Выдача источника сертификатов — это то, что обычно выдает сертификаты различным конечным точкам.
- Leaf — конечные точки, такие как рабочие станции, серверы и т. д. Ваша система PowerStore относится к этой категории.
В зависимости от того, как был выдан сертификат PowerStore, полученный файл может содержать только один сертификат для конечной точки PowerStore (Leaf) или всю цепочку (Leaf-лист + issuingCA + корневой сертификат). Вы не можете импортировать файл, содержащий только один сертификат leaf, в PowerStore на следующих шагах. Необходимо создать полную цепочку (leaf + issuingCA + rootCA) в виде одного PEM-файла в кодировке BASE64, содержащего все три (или более, если у вас больше CA в цепочке) сертификаты.
Если этого еще нет, необходимо получить сертификаты в кодировке BASE64 для выдающего центра сертификации и корневого центра сертификации и объединить их с конечным сертификатом PowerStore в один файл PEM:
$ cat powerstoreXY.cer issuingca.cer rootca.cer > combined.pem
Откройте файл combined.pem в текстовом редакторе и удалите все конечные или начальные пробелы и пустые строки. Кроме того, основной текст сертификатов (данные между тегами BEGIN/END CERTIFICATE) должен состоять из одной строки.
Результирующий файл combined.pem должен выглядеть примерно так, как показано ниже.
$ cat combined.pem -----BEGIN CERTIFICATE----- MIIGFjCCA/6gAwIBAgITdAAAAkiG9w0BAQs<trimmed for brevity><PowerStore leaf cert>7NcBrSr0Ach8rC443vrqLSChaTZF0fj81DE= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGXjCCBEagAwIBDANBgkqhkiG9w0BAQ0F<trimmed for brevity><Issuing CA cert>HU+TePFvwmGruno8fGI4iLyh5kWjnWW2SZVI4wWQ= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFCzCCAvOgAwIyoqhkiG9w0BAQ0FAuDAX<trimmed for brevity><Root CA cert>wRh/EXhVd32yvTxupm288LcH3UU3iGHx0tHieAGEkT0= -----END CERTIFICATE-----
Шаг 4. Импорт цепочки подписанных сертификатов
На этом последнем этапе вы заменяете самозаверяющий сертификат PowerStore путем импорта полной цепочки, состоящей из вашего нового подписанного сертификата и всех CA. Вам потребуется идентификатор сертификата, созданный на шаге 2б.
Если вы его не записали, выполните следующую команду, чтобы снова получить этот идентификатор:
$ pstcli -u admin -p <password> -d <cluster_ip> x509_certificate show # | id | type | service | is_current | is_valid ----+--------------------------------------+--------+------------------+------------+---------- 1 | 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd | Server | Management_HTTP | no | no 2 | 00907634-b4eb-446a-a381-aae685bae066 | Server | Management_HTTP | yes | yes 3 | c5f03cf7-fe1d-40bd-b6fb-7abba0c6026a | Client | Replication_HTTP | yes | yes 4 | 9d0ec275-3688-4ae2-922b-639e1cfb0b88 | Server | VASA_HTTP | yes | yes
Обратите внимание, что сертификат Management_HTTP о предоставлении услуг НЕДЕЙСТВИТЕЛЕН и НЕ является актуальным. В приведенном выше примере id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd - это тот, который вам нужен.
Выполните следующую команду, чтобы импортировать цепочку:
$ pstcli -u admin -p <password> -d <cluster_id> x509_certificate -id <cert_id> set -is_current true -certificate '<contents_of_the_combined.pem_file>'
Пример.
pstcli -u admin -d self x509_certificate -id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd set -is_current true -certificate $'-----BEGIN CERTIFICATE-----\n[...Single line PowerStore certificate content...]\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n[...Single line CA Certificate certificate content...] \n-----END CERTIFICATE-----'
В качестве альтернативы, при использовании станции Linux с PSTCLI (например, SSH в PowerStore) можно указать интерпретатору BASH использовать все, что находится между $ ' ', точно как есть, включая форматирование. В этом случае не требуется добавлять "новую строку \n":
pstcli -u admin -d self x509_certificate -id 81ea4b51-4b80-4a88-87f1-f0a0ddd1c1fd set -is_current true -certificate $'-----BEGIN CERTIFICATE-----
MIIGFjCCA/6gAwIBAgITdAAAAA4SiEpOgIXLggABAAAADjANBgkqhkiG9w0BAQsF<trimmed for brevity><PowerStore leaf cert>7NcBrSr0Ach8rC443vrqLSChaTZFt1TtYiSJJT+ZEL2F0/TG9BTXBbHKFTVFXgf9l9dWpDkH6mq/fhgaMNT/vuMCUtD40fj81DE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGXjCCBEagAwIBAgITQgAAAARkLTTf7tqFAQAAAAAABDANBgkqhkiG9w0BAQ0F<trimmed for brevity><Issuing CA cert>HU+TePFvwmGruno8o65kK+qWvvYG10PbMbIYxxm/zyofGI4iLyh5kWjnWW2SZVI4wWQ=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFCzCCAvOgAwIBAgIQad6TNg7Pqa5HsuYzLFAK5jANBgkqhkiG9w0BAQ0FADAX<trimmed for brevity><Root CA cert>wRh/EXhVd32yvTxOdBGBBENLQnD6U6HkA4FO/jVbXR2B793giBmi9w85+B7obgWPSTypIgA+LKG3nE0jf5AW5LnOV+gQDCOsSJlGpm288LcH3UU3iGHx0tHieAGEkT0=
-----END CERTIFICATE-----'
На этом этапе новый сертификат должен быть установлен и работоспособен. Чтобы увидеть новый сертификат, необходимо закрыть и перезапустить браузер. При повторном подключении с помощью PSTCLI также появится предупреждение о том, что отпечаток сертификата изменился, что указывает на успешную установку нового сертификата.