IBM® MQ 允许您使用相互 TLS 进行认证,其中连接两端都提供证书,证书中的详细信息用于与队列管理器建立身份。 本主题介绍了如何使用 OpenSSL 命令行工具创建示例公用密钥基础结构 (PKI) ,从而创建可在其他示例中使用的两个证书。
开始之前
确保已安装 OpenSSL 命令行工具。
安装
IBM MQ client,并将
samp/bin 和
bin 添加到
PATH。 您需要使用 "
runmqicred命令,它可以作为 "
IBM MQ client的一部分安装,如下所示:
关于本任务
重要信息: 此处描述的示例不适用于生产环境,仅用作快速入门的示例。 证书管理是高级用户的复杂主题。 对于生产,您必须考虑诸如轮换,撤销,密钥长度,灾难恢复等事项。
这些步骤已使用 OpenSSL 3.1.4进行测试。
过程
- 创建要用于内部认证中心的专用密钥
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 -out ca.key
内部认证中心的专用密钥是在名为 ca.key的文件中创建的。 此文件应保持安全和秘密-它将用于签署内部认证中心的证书。
- 为内部认证中心发放自签名证书
openssl req -x509 -new -nodes -key ca.key -sha512 -days 30 -subj "/CN=example-selfsigned-ca" -out ca.crt
-days 指定根 CA 证书将有效的天数。
将在名为 ca.crt的文件中创建证书。 此证书包含有关内部认证中心的公共信息,并且可自由共享。
- 为队列管理器创建专用密钥和证书
- 为队列管理器创建专用密钥和证书签名请求
openssl req -new -nodes -out example-qm.csr -newkey rsa:4096 -keyout example-qm.key -subj '/CN=example-qm'
在名为 example-qm.key的文件中创建专用密钥,并在名为 example-qm.csr 的文件中创建证书签名请求
- 使用内部认证中心对队列管理器密钥进行签名
openssl x509 -req -in example-qm.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out example-qm.crt -days 7 -sha512
-days 指定证书将有效的天数。
在名为 example-qm.crt 的文件中创建签名证书
- 使用队列管理器密钥和证书创建 Kubernetes 私钥
kubectl create secret generic example-qm-tls --type="kubernetes.io/tls" --from-file=tls.key=example-qm.key --from-file=tls.crt=example-qm.crt --from-file=ca.crt
将创建名为 example-qm-tls 的 Kubernetes 私钥。 此私钥包含队列管理器,公用证书和 CA 证书的专用密钥。
- 为应用程序创建专用密钥和证书
- 为应用程序创建专用密钥和证书签名请求
openssl req -new -nodes -out example-app1.csr -newkey rsa:4096 -keyout example-app1.key -subj '/CN=example-app1'
在名为 example-app1.key的文件中创建专用密钥,并在名为 example-app1.csr 的文件中创建证书签名请求
- 使用内部认证中心对队列管理器密钥进行签名
openssl x509 -req -in example-app1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out example-app1.crt -days 7 -sha512
-days 指定证书将有效的天数。
在名为 example-app1.crt 的文件中创建签名证书
- 使用应用程序的密钥和证书创建 PKCS#12 密钥库
IBM MQ 使用密钥数据库,而不是单个密钥文件。 容器化队列管理器将从私钥为队列管理器创建密钥数据库,但对于客户机应用程序,您需要手动创建密钥数据库。
openssl pkcs12 -export -in "example-app1.crt" -name "example-app1" -certfile "ca.crt" -inkey "example-app1.key" -out "example-app1.p12" -passout pass:PASSWORD
其中
PASSWORD 是您自己选择的密码。
将在名为 example-app1.p12的文件中创建密钥库。 应用程序的密钥和证书存储在其中,带有 "example-app1" 的 "标签" 或 "友好名称" 以及 CA 证书。
- 如果使用的是 arm64 Apple Mac ,那么需要配置另一个将应用程序和 CA 证书组合在一起的文件。
例如:
cat example-app1.crt ca.crt > example-app1-chain.crt