跳到主要内容

配置密钥

密钥是一种将敏感数据传输到主机的机制,以便在该主机上运行的容器中使用这些数据。在生产环境中,创建和填充密钥位置通常由自动化工具完成。密钥是在控制器应用程序中创建的,然后在部署容器时与需要它们的主机共享。例如,Kubernetes这样的工具会将密钥传输到主机上的临时文件系统(这样密钥就永远不会被写入磁盘),然后将该位置挂载到容器中。

您使用配置键来指定信息,例如密钥的路径;在启动时,软件事件代理读取密钥并相应地设置配置。

在本节中,我们将向您展示如何:

  • 创建一个密钥目录并将服务器证书和包含用户名密码的文件放入其中
  • 使用密钥配置创建软件事件代理容器

以下示例创建了一个UID为0(即根用户)的容器。对于非零UID,请除了执行以下步骤外,还需要执行以下操作:

  • 通过在第3步的create命令中添加--user参数来指定容器的UID。
  • 使用Linux主机上的chown命令将容器的密钥目录的所有者更改为创建容器的同一用户,例如:
    chown --recursive <container uid>:<container gid> /<local-pathname>/secrets
  • 使用Linux主机上的chmod 500命令授予密钥目录读写执行权限,并限制与目录关联的组中的其他用户的权限。
    chmod --recursive 500 /<local-pathname>/secrets

第1步:创建密钥目录

在主机上创建一个密钥目录。

例如:

$ mkdir -p <local-pathname>/secrets

其中:

<local-pathname>是密钥目录在主机上的位置路径。

第2步:将文件放入密钥目录

将服务器证书和包含用户名密码的文件放入密钥目录。

例如:

$ scp <username>@<host>:<remote-pathname>/<certificate-file> <local-pathname>/secrets/
$ scp <username>@<host>:<remote-pathname>/<password-file> <local-pathname>/secrets/

其中:

  • <username>是访问远程证书文件所需的用户名(如果需要)。
  • <host>是存储远程证书文件的服务器地址。
  • <remote-pathname>是从服务器根目录到密钥目录位置的路径。
  • <certificate-file>是在事件代理上使用的服务器证书的文件名。
  • <password-file>是包含软件事件代理用户名的明文密码的文件。

第3步:创建软件事件代理容器

使用密钥配置创建软件事件代理容器。

以下示例适用于测试部署。它展示了如何使用运行docker create的shell脚本配置密钥目录。podman create的选项非常相似。

对于生产部署,有依赖于用例的因素影响创建容器的设置。有关更多信息,请参见配置键和使用配置键设置扩展参数。

>sudo tee /root/docker-create <<-EOF
#!/bin/bash
sudo docker create \
--network=host \
--uts=host \
--shm-size=1g \
--ulimit core=-1 \
--ulimit memlock=-1 \
--ulimit nofile=2448:42192 \
--env 'username_admin_globalaccesslevel=admin' \
--env 'username_admin_passwordfilepath=<password-file>' \
--env 'tls_servercertificate_filepath=<certificate-file>' \
--volume /<local-pathname>/secrets:/run/secrets \
--name=solace solace-app:<version-edition> \
EOF

在此示例中:

  • --volume /<local-pathname>/secrets:/run/secrets选项将密钥目录挂载到容器内的指定位置。
  • 通过username_admin_globalaccesslevelusername_admin_passwordfilepath=<password-file>配置键在容器创建时定义了admin Solace CLI用户和包含用户名密码文件的密钥目录的路径。
  • tls_servercertificate_filepath配置键定义了放置服务器证书的密钥目录的路径。如果文件中包含的TLS服务器证书是加密的,则必须通过tls_servercertificate_passphrasefilepath配置键提供包含密码短语的文件的路径。有关更多信息,请参见初始化软件事件代理容器。

在上述docker create命令中:

  • solace-app是仓库名称。
  • <version-edition>是软件事件代理版本。版本-版本取决于您获得的软件包。您可以使用docker images命令检查版本-版本。

在重新加载容器到默认配置时,重新加载时必须存在密钥和密钥,否则新初始配置中将不存在先前由密钥配置的初始配置。

第4步:使用Solace CLI验证

一旦您的容器运行起来,使用Solace CLI验证软件事件代理密钥配置:

solace> show ssl server-certificate
Filename: servercert.pem
Configured at: Oct 11 2017 1933:42 UTC