Xray的RabbitMQ的详细TLS设置

帕特里克·罗素
2023-01-22十一10

Xray的TLS步骤

注:此信息设计用于x射线2。X

x光2。Xhas three third-party microservices (RabbitMQ, Postgresql, MongoDB), and all of these services communicate with Xray via unencrypted channels.

通常这是可以的,因为您可以锁定web服务器或将所有内容留在同一台主机上。然而,对于一些有安全意识的用户来说,加密x射线是必须的。

Xray Wiki提供了要使用的设置和字段,但假设用户具有SSL加密和调优Xray使用的微服务的专业知识。本指南详细介绍了如何创建自签名证书并将其安装到这些服务中。然后可以在配置系统后获取ca签名的证书。

要按照这些步骤使用自签名证书,请确保将自签名证书添加到Xray主机操作系统信任存储区。这个网络资源可能被证明是有用的。

RabbitMQ TLS

RabbitMQ需要有一个CA(证书颁发机构)文件以及更标准的SSL证书。

1)使用OpenSSL创建必要的证书。为了对证书进行签名,我们首先需要一个证书签名请求(CSR)。

创建一个证书签名请求(CSR)文件对

Openssl req -new -nodes -text -out ca.csr -keyout ca-key。pem -subj "/CN=certificate-authority"

然后我们需要4个文件:服务器(RabbitMQ)的密钥和证书以及客户端(Xray)的密钥和证书。

#使用CSR文件创建服务器TLS服务器证书颁发机构、密钥和证书

Openssl x509 -req -in ca.csr -text -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca -signkey ca-key。Pem -out ca-cert.pem

Openssl req -new -nodes -text -out server。CSR -keyout server-key。pem -subj "/CN=rabbitmq"

Openssl x509 -req -in server。-text -CA ca-cert. csrpem -CAkey ca-key。- ccreatesserial -out server-cert.pem

#创建客户端CSR和证书

Openssl req -new -nodes -text -out client。CSR -keyout client-key。pem -subj "/CN=rabbitmq"

Openssl x509 -req -in客户端。-text -CA ca-cert. csrpem -CAkey ca-key。输出client-cert.pem

最后你应该有这些文件:

  • server-cert.pem
  • server-key.pem
  • client-cert.pem
  • client-key.pem
  • ca-cert.pem

2)将这三个服务器文件复制到rabbitMQ可以到达的文件夹中:

cp ca-cert。pem server-cert。pem服务器密钥。pem /etc/ssl/rabbitmq/

3)现在给用户,组和正确的权限复制的文件

修改rabbitmq /etc/ssl/rabbitmq/*

CHGRP rabbitmq /etc/ssl/rabbitmq/*

Chmod 644 /etc/ssl/rabbitmq/*


4)将这些TLS设置添加到/etc/rabbitmq/rabbitmq.conf文件。注意,我们在ssl_options行中传递了三个PEM文件的路径。

loopback_users。Guest = false
listener .tcp.default = 5672
Hipe_compile = false
Management.listener.port = 15672
Management.listener.ssl = true
listener .ssl.default = 5671

ssl_options。Cacertfile = /etc/ssl/rabbitmq/ca-cert.pem
ssl_options。Certfile = /etc/ssl/rabbitmq/server-cert.pem
ssl_options。Keyfile = /etc/ssl/rabbitmq/server-key.pem
ssl_options。Verify = verify_peer
ssl_options。Fail_if_no_peer_cert = false

ssl_options.ciphers。1 = aes256-sha256
ssl_options.ciphers。2 = aes256-gcm-sha384
ssl_options。Honor_cipher_order = true
ssl_options。Honor_ecc_order = true

作为测试,你可以重启Xray,看看RabbitMQ是否上线。RabbitMQ仍然会在它的HTTP端口上提供流量,Xray应该不会出现问题。Xray将使用HTTP端口,直到我们在接下来的步骤中进行配置更改并重新启动。

5)跑步x射线REST API命令在x射线端启用TLS加密:

curl -uadmin:password -XPUT http://localhost:8000/api/v1/configuration/systemParameters -v -H"Content-type: application/json" -d '{"sslInsecure":true,"maxDiskDataUsage":80,"monitorSamplingInterval":300,"messageMaxTTL":7,"jobInterval":86400,"allowSendingAnalytics":true,"httpsPort":443,"mailNoSsl":false,"enableTlsConnectionToRabbitMQ":true}'


         

要验证这是否成功,运行下面的命令。如果返回修改后的JSON值,则操作成功:

curl -uadmin:密码http://localhost:8000/api/v1/configuration/systemParameters

TLS连接将不会被使用,直到我们重启Xray。不要重新启动,我们仍然需要提供客户端证书文件。

8)复制证书,使其为Xray所有;
Mkdir -p /var/opt/jfrog/xray/data/ssl/rabbitmq

cp /etc/ssl/rabbitmq/ca-cert.pem /etc/ssl/rabbitmq/server-cert.pem/etc/ssl/rabbitmq/server-key.pem /var/opt/jfrog/xray/data/ssl/rabbitmq/

Chown xray:xray /var/opt/jfrog/xray/data/ssl/rabbitmq/*

9)现在更新连接字符串,并在xray_config中添加x射线证书路径。yaml文件:

mqBaseUrl: amqp: / / 12 c[…]b21N@rabbitmq: 5671


clientCaCertFilePath: /var/opt/jfrog/xray/data/ssl/rabbitmq/ca-cert.pem

clientCertFilePath: /var/opt/jfrog/xray/data/ssl/rabbitmq/server-cert.pem

clientCertKeyFilePath: /var/opt/jfrog/xray/data/ssl/rabbitmq/server-key.pem

注意,我们使用的是“amqps”和端口5671。这是安全的RabbitMQ协议。

10)重新启动整个x射线应用程序。

./xray.sh restart all

11)如果一切配置正确,您可以访问https://:15672的rabbitmq, Xray正在使用安全TLS连接。