跳转到内容
搜索文档

IBM Cloud HSM

最后更新 查看 MarkdownAgent 设置

以下示例使用 IBM Cloud HSM 7.0 进行测试,这是一种基于 Gemalto SafeNet Luna a750 的经 FIPS 140-2 Level 3 认证的实现。


开始之前

请确保您已:


1. 创建、分配并初始化新分区

第一步是创建 HSM 分区,可以将其视为 IBM Cloud HSM 设备中的独立逻辑 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 字段。它必须设置为大端十六进制整数值。

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

使用上一步中创建的密钥,生成可发送给公开受信任的证书颁发机构 (CA) 进行签名的 CSR。

# 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=mykeypin-value=username:password 值更改为与您提供的密钥标签和创建的 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

这篇文档对您有帮助吗?