← Cloudflare SSL/TLS / ssl / keyless-ssl / hardware-security-modules
Azure Dedicated HSM
В этом руководстве используется Azure Dedicated HSM ↗ : реализация, сертифицированная по стандарту FIPS 140-2 Level 3, на основе Gemalto SafeNet Luna a790.
Прежде чем начать
Убедитесь, что у вас есть:
- Следуя рекомендациям Microsoft руководство ↗ для развёртывания HSM в существующей виртуальной сети с помощью PowerShell
- Установлен клиентское ПО SafeNet ↗
1. Создание, назначение и инициализация нового раздела
Первый шаг: создание раздела HSM, который можно рассматривать как независимый логический HSM в составе вашего устройства Azure Dedicated HSM.
vm$ ssh tenantadmin@hsm
[local_host] lunash:>hsm login
Please enter the HSM Administrators' password:
> ********
'hsm login' successful.
Command Result : 0 (Success)
[local_host] lunash:>partition create -partition KeylessSSL
Type 'proceed' to create the partition, or
'quit' to quit now.
> proceed
'partition create' successful.
Command Result : 0 (Success)Далее раздел нужно назначить клиенту, в данном случае вашему серверу ключей.
[local_host] lunash:>client assignpartition -client azure-keyless -partition KeylessSSL
'client assignPartition' successful.
Command Result : 0 (Success)После назначения раздела выполните lunacm с вашего виртуального сервера и инициализируйте раздел.
vm$ lunacm
lunacm (64-bit) v7.2.0-220. Copyright (c) 2018 SafeNet. All rights reserved.
Available HSMs:
Slot Id -> 0
Label ->
Serial Number -> XXXXXXXXXXXXX
Model -> LunaSA 7.2.0
Firmware Version -> 7.0.3
Configuration -> Luna User Partition With SO (PW) Signing With Cloning Mode
Slot Description -> Net Token Slot
Current Slot Id: 0
lunacm:>partition init -label KeylessSSL -domain cloudflare
Enter password for Partition SO: ********
Re-enter password for Partition SO: ********
You are about to initialize the partition.
All contents of the partition will be destroyed.
Are you sure you wish to continue?
Type 'proceed' to continue, or 'quit' to quit now ->proceed
Command Result : No Error2. Генерация пары ключей RSA и запроса на подпись сертификата (CSR)
Прежде чем выполнять команды ниже, уточните у своей команды информационной безопасности и (или) криптографии утверждённые процедуры создания ключей для вашей организации.
# cmu generatekeypair -keyType=RSA -modulusBits=2048 -publicExponent=65537 -sign=1 -verify=1 -labelpublic=myrsakey -labelprivate=myrsakey -keygenmech=1
Please enter password for token in slot 0 : ********
# cmu list
Please enter password for token in slot 0 : ********
handle=51 label=myrsakey
handle=48 label=myrsakeyС помощью ключа, созданного на предыдущем шаге, создайте CSR, который можно отправить на подпись в общедоверенный удостоверяющий центр (CA).
# cmu requestCertificate -c="US" -o="Example, Inc." -cn="azure-dedicatedhsm.example.com" -s="California" -l="San Francisco" -publichandle=48 -privatehandle=51 -outputfile="rsa.csr" -sha256withrsa
Please enter password for token in slot 0 : ********
Using "CKM_SHA256_RSA_PKCS" Mechanism3. Получите и загрузите подписанный сертификат от удостоверяющего центра (CA)
Передайте CSR, созданный на предыдущем шаге, предпочтительному CA вашей организации, подтвердите владение доменом требуемым способом, а затем загрузите подписанные SSL-сертификаты. Следуйте инструкциям, приведённым в Загрузка сертификатов Keyless SSL.
4. Измените файл конфигурации gokeyless и перезапустите службу
Наконец, необходимо изменить файл конфигурации, который сервер ключей считывает при запуске. Обязательно измените object=mykey и pin-value=username:password значения, соответствующие указанной вами метке ключа (key label) и созданному пользователю CU.
Откройте /etc/keyless/gokeyless.yaml и сразу после:
private_key_stores:
- dir: /etc/keyless/keysдобавить:
- uri: pkcs11:token=KeylessSSL;object=myrsakey?module-path=/usr/safenet/lunaclient/lib/libCryptoki2_64.so&pin-value=password&max-sessions=1Сохранив файл конфигурации, перезапустите gokeyless и убедитесь, что он успешно запустился.
sudo systemctl restart gokeyless.service
sudo systemctl status gokeyless.service -l