INTEGRITY Документация

IBM Cloud HSM

Приведённый ниже пример протестирован с использованием IBM Cloud HSM 7.0, реализация, сертифицированная по FIPS 140-2 Level 3, на основе Gemalto SafeNet Luna a750.


Прежде чем начать

Убедитесь, что у вас есть следующее:


1. Создание, назначение и инициализация нового раздела

Первый шаг: создание раздела HSM, который можно рассматривать как независимый логический HSM в составе вашего устройства IBM Cloud HSM.

vm$ ssh admin@hsm

[cloudflare-hsm.softlayer.com] lunash:>partition create -partition KeylessSSL


          Type 'proceed' to create the partition, or
          'quit' to quit now.
          > proceed
'partition create' successful.


Command Result : 0 (Success)

Далее раздел нужно назначить клиенту, в данном случае вашему серверу ключей.

[cloudflare-hsm.softlayer.com] lunash:>client assignpartition -client cloudflare-vm.softlayer.com -partition KeylessSSL


'client assignPartition' successful.


Command Result : 0 (Success)

После назначения раздела выполните lunacm с вашего виртуального сервера и инициализируйте раздел.

vm$ lunacm
LunaCM v7.1.0-379. Copyright (c) 2006-2017 SafeNet.

    Available HSMs:

    Slot Id ->              0
    Label ->
    Serial Number ->        XXXXXXXXXXXXX
    Model ->                LunaSA 7.0.0
    Firmware Version ->     7.0.1
    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 Error

2. Генерация пар ключей RSA и ECDSA, а также запросов на подпись сертификата (CSR)

Прежде чем выполнять команды ниже, уточните у своей команды информационной безопасности и (или) криптографии утверждённые процедуры создания ключей для вашей организации.

При выполнении этой операции необходимо задать поле ID для новых сгенерированных ключей. Значение должно быть представлено в виде шестнадцатеричного целого числа в формате big-endian.

vm$ cmu generatekeypair -keyType=RSA -modulusBits=2048 -publicExponent=65537 -sign=1 -verify=1 -labelpublic=myrsakey -labelprivate=myrsakey -keygenmech=1  -id=a000
Please enter password for token in slot 0 : ********

# cmu generatekeypair -keyType=ECDSA -curvetype=3 -sign=1 -verify=1 -labelpublic=myecdsakey -labelprivate=myecdsakey -id=a001
Please enter password for token in slot 0 : ********

# cmu list
Please enter password for token in slot 0 : ********
handle=61   label=myecdsakey
handle=60   label=myecdsakey
handle=48   label=myrsakey
handle=45   label=myrsakey

С помощью ключей, созданных на предыдущем шаге, создайте CSR, которые можно отправить на подпись в общедоверенный удостоверяющий центр (CA).

# cmu requestCertificate -c="US" -o="Example, Inc." -cn="ibm-cloudhsm.example.com" -s="California" -l="San Francisco" -publichandle=45 -privatehandle=48 -outputfile="rsa.csr" -sha256withrsa
Please enter password for token in slot 0 : ********
Using "CKM_SHA256_RSA_PKCS" Mechanism

# cmu requestCertificate -c="US" -o="Example, Inc." -cn="ibm-cloudhsm.example.com" -s="California" -l="San Francisco" -publichandle=60 -privatehandle=61 -outputfile="ecdsa.csr" -sha256withecdsa
Please enter password for token in slot 0 : ********
Using "CKM_ECDSA_SHA256" Mechanism

3. Получите и загрузите подписанные сертификаты от удостоверяющего центра (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=myrsakeyid=a000??module-path=/usr/safenet/lunaclient/lib/libCryptoki2_64.so&pin-value=password&max-sessions=1
- uri: pkcs11:token=KeylessSSL;object=myecdsakeyid=a001??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