XRAY:如何使用SANS创建RabbitMQ证书

劳伦斯冯
2023-01-22 11:06

这篇文章是由我们社区的一位强大成员贡献的:

布拉德利·赫林,IBM
bcherrin.wolfpack@gmail.com
GitHub: bradleycherrin

当尝试通过TLS连接RabbitMQ时,如果证书中没有启用san,可能会遇到以下错误。2017-03-15 t23:10:21 . 393z [jfxr] [ERROR] [35739315012a120d] [main]连接兔子消息队列检查mq设置错误。错误:x509:证书依赖于旧的公共名称字段,请使用san代替

如何使用SANS创建证书

要解决这个问题,我们需要用san创建证书。完成此操作的步骤可能取决于您的OpenSSL版本。在下面的示例中,使用OpenSSL 1.1.1创建了证书。这些说明应与我们产品上的说明类似维基但是,本文将介绍如何使用san创建证书和一般配置步骤。

1.我们需要创建一个包含subjectAltName的openssl.cnf文件。下面是一个供参考的例子。
(要求)
Default_bits = 4096
Default_md = sha256
Default_keyfile = privkey.pem
Distinguished_name = req_distinguished_name
Attributes = req_attributes
x509_extensions = v3_ca #要添加到自签名证书的扩展
(req_attributes)
(req_distinguished_name)
countryName =美国
countryName_min = 2
countryName_max = 2
stateOrProvinceName = XXX
localityName = XXX
0.organizationName = JFROG
organizationalUnitName = XXX
commonName = www.si-fil.com
commonName_max = 64
emailAddress = example@www.si-fil.com
emailAddress_max = 64
[v3_ca]
subjectKeyIdentifier =哈希
authorityKeyIdentifier = keyid:既往,发行人
basicConstraints = critical,CA:true
[req_ext]
subjectAltName = DNS:testxray.vm

2.配置完openssl.cnf之后,可以运行下面的命令来生成所需的证书。请注意,此处以subjectAltName为例。
Openssl req -new -nodes -text -out ca.csr -keyout ca-key。pem -subj "/CN=certificate-authority" -addext "subjectAltName = DNS:testxray.vm"

Openssl .cnf -extensions v3_ca -signkey ca-key。Pem -out ca-cert.pem

Openssl req -new -nodes -text -out server。CSR -keyout server-key。/CN=testxray. pem -subj "。" -addext "subjectAltName = DNS:testxray.vm"

Openssl x509 -req -in server。openssl.cnf -extensions v3_ca -CA ca-cert. csr -text -extfilepem -CAkey ca-key。- ccreatesserial -out server-cert.pem

Openssl req -new -nodes -text -out client。CSR -keyout client-key。/CN=testxray. pem -subj "。" -addext "subjectAltName = DNS:testxray.vm"

Openssl x509 -req -in客户端。openssl.cnf -extensions v3_ca -CA ca-cert. csr -text -extfilepem -CAkey ca-key。输出client-cert.pem

3.我们需要将这些证书复制到正确的位置。请参考以下文档,因为这可能取决于您的安装类型。

//www.si-fil.com/confluence/display/JFROG/TLS+Certificates#TLSCertificates-SecuringRabbitMQwithTLSSupportonXray

4.然后我们需要配置x射线系统。使用这些证书。下面是一个示例系统。供参考。

共享:
rabbitMq:
##启用该功能可以停止rabbitmq和xray的其他服务
默认情况下,rabbitmq将始终运行
#自动停车:真
节点:
rabbitmqConf:
—名称:ssl_options.cacertfile
价值:/var/opt/jfrog/xray/data/rabbitmq/certs/ca-cert.pem
—名称:ssl_options.certfile
价值:/var/opt/jfrog/xray/data/rabbitmq/certs/server-cert.pem
—名称:ssl_options.keyfile
价值:/var/opt/jfrog/xray/data/rabbitmq/certs/server-key.pem
—名称:ssl_options.verify
价值:verify_peer
—名称:ssl_options.fail_if_no_peer_cert
值:false
—name: management.listener.ssl
值:true
—name: listener .ssl.default
值:5671
自动停车:真
url: amqp: / /客人:password@rabbitmq: 5671
密码:密码
env:
GODEBUG:“x509ignoreCN = 0”
RABBITMQ_ERLANG_COOKIE: "{{xray_first_node}}-ERLANG-COOKIE"
RABBITMQ_NODENAME: "{{inventory_hostname_short}}"
XRAY_CERT_FILE_PATH: / opt / jfrog / x光/ var /数据/服务器/证书/ client-cert.pem”
XRAY_CERT_KEY_FILE_PATH: / opt / jfrog / x光/ var /数据/服务器/证书/ client-key.pem”
XRAY_CA_CERT_FILE_PATH: / opt / jfrog / x光/ var /数据/服务器/证书/ ca-cert.pem”

5.我们还需要确保$XRAY_HOME/app/bin/rabbitmq/rabbitmq.conf配置为使用证书。它应该类似于以下内容。

听众。TCP =无
listener .ssl.default = {{xray_rabbitmq_ssl_port_1}}
listeners.ssl。Other_port = {{xray_rabbitmq_ssl_port_2}}
loopback_users。Guest = false
ssl_options。Verify = verify_peer
ssl_options。Fail_if_no_peer_cert = false
ssl_options。Cacertfile = {{xray_rabbitmq_certs_dir}}/ca-cert.pem
ssl_options。Certfile = {{xray_rabbitmq_certs_dir}}/server-cert.pem
ssl_options。Keyfile = {{xray_rabbitmq_certs_dir}}/server-key.pem
Management.ssl.port = {{xray_rabbitmq_management_ssl_port}}
Management.ssl.cacertfile = {{xray_rabbitmq_certs_dir}}/ca-cert.pem
Management.ssl.certfile = {{xray_rabbitmq_certs_dir}}/server-cert.pem
Management.ssl.keyfile = {{xray_rabbitmq_certs_dir}}/server-key.pem
Management.listener.ssl = true

6.在Xray中运行REST API以启用TLS连接到RabbitMQ¶
curl -u -X PUT -H "Content-Type: application/json" http://:8082/xray/api/v1/configuration/systemParameters -d '{"sslInsecure": false,"maxDiskDataUsage": 80,"monitorSamplingInterval": 300,"mailNoSsl": false,"messageMaxTTL": 7,"jobInterval": 86400,"allowSendingAnalytics": true,"httpsPort": 443,"enableTlsConnectionToRabbitMQ": true,"httpClientMaxConnections": 50,"httpClientMaxIdleConnections": 20} "

7.重启Xray,检查是否可以连接到RabbitMQ