在x射线上使用TLS支持保护PostgreSQL
将这些TLS参数复制到
/var/opt/jfrog/postgres/data/postgresql.conf
.ssl = on ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' ssl_prefer_server_ciphers = on ssl_cert_file = '/full/path/to/postgres/certificates/server. 'Crt ' ssl_key_file = '/full/path/to/postgres/certificates/server. Crt ' ssl_key_file = '/full/path/to/postgres/certificates/server. Crt ' ssl_key_file = 'Key ' ssl_ca_file = '/full/path/to/postgres/certificates/server_ca.crt'
验证证书是否具有正确的权限。
Chown postgres/ full/path/to/postgres/certificates/* && \ CHGRP postgres/ full/path/to/postgres/certificates/* && \ chmod 600 /full/path/to/postgres/certificates/*
更改/ . conf中的连接字符串
var / opt / jfrog / x光/ var / etc / system.yaml
文件。postgres: / / x光:xray@postgres: 5432 / xraydb ? sslrootcert = /全/道路/ / x光/证书/ ca_certificate.crt&sslkey = /全/道路/ / x光/证书/ client.key&sslcert = /全/道路/ / x光/证书/ client.crt&sslmode = verify-ca
确保您有一个x射线用户和组。
Groupadd -g 1035 x射线&& \ adduser x射线——uid 1035——gid 1035
为证书分配权限。
Chown xray/ full/path/to/xray/certificates/* && \ CHGRP xray/ full/path/to/xray/certificates/* && \ chmod 600 /full/path/to/xray/certificates/*
重新启动所有的x光服务。
重启/opt/jfrog/xray/scripts/xray.sh
在x射线上使用TLS支持保护RabbitMQ
创建一个
openssl.cnf
文件,并确保它包含字段,subjectAltName
,以及所有其他必填项。
下面的示例展示了一个示例openssl.cnf
文件。[req] default_bits = 4096 default_md = sha256 default_keyfile = privkey。pem distinguished_name = req_distinguished_name属性= req_attributes x509_extensions = v3_ca #扩展添加到自签署证书[req_attributes] [req_distinguished_name] countryName =我们countryName_min = 2 countryName_max = 2 XXX stateOrProvinceName = XXX localityName = 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:always,issuer basicConstraints = critical,CA:true [req_ext] subjectAltName = DNS:testxray.vm
2 .执行如下命令生成RabbitMQ和Xray的证书.
在命令中,
subjectAltName
,为示例和值应该是可解析的DNS。并应在系统中使用。在提供shared.rabbitMq.url时使用yaml文件步骤6).创建CA文件。
#创建ca-key。CA . pem和CA .csr CA文件。这些是自签名的。Openssl req -new -nodes -text out ca.csr -keyout ca-key。. pem -subj "/CN=certificate-authority" -addext "subjectAltName = DNS:testx射线.vm"
签署CA私钥CA -key。pem,并创建相应的CA证书。
Openssl x509 -req -in ca.csr -text -extfile Openssl .cnf -extensions v3_ca -signkey ca-key。导出ca-cert.pem
创建RabbitMQ私钥(server-key.pem)和证书签名请求文件(server.csr)。
Openssl req -new -nodes -text -out server。CSR -keyout server-key。pem -subj "/CN=testx射线。vm" -addext "subjectAltName = DNS:testxray.vm"
创建RabbitMQ签名公钥(server-cert.pem)。
Openssl x509 -req -in服务器。csr -text -extfile openssl.cnf -extensions v3_ca -CA ca-cert. xmlpem -CAkey ca-key。输出server-cert.pem
创建x射线客户端密钥(client-key.pem)和证书签名请求文件(client.csr)。
Openssl req -new -nodes -text -out客户端。CSR -keyout client-key。pem -subj "/CN=testx射线。vm" -addext "subjectAltName = DNS:testxray.vm"
创建x射线客户端证书文件。
Openssl x509 -req -in客户端。csr -text -extfile openssl.cnf -extensions v3_ca -CA ca-cert. xmlpem -CAkey ca-key。输出client-cert.pem
创建
确实的事情
目录下美元JFROG_HOME / x光/ var /数据/服务器
而且$ JFROG_HOME / x光/ var /数据/ rabbitmq
.mkdir $JFROG_HOME/xray/var/data/server/certs mkdir $JFROG_HOME/xray/var/data/rabbitmq/certs . mkdir $JFROG_HOME/xray/var/data/rabbitmq/certs . mkdir
将ca和服务器证书复制到
rabbitmq JFROG_HOME美元/ x光/ var /数据/ /确实的事情
而且美元JFROG_HOME / x光/ var /数据/服务器/确实的事情
分别。码头工人组成ls -ltr
/xray/var/data/server/certs/ total 3 -rw-r——r——1 xray xray 1127 Oct 11 15:55 ca-cert. ls -ltr /xray/var/data/server/certs/ total 3pem -rw-r——r——1 x射线x射线993 10月11日15:55 client-cert。pem -rw-r—r—1 xray xray 1704 Oct 11 15:55 client-key.pem RPM / debls -ltr /opt/jfrog/xray/var/data/server/certs/ total 3 -rw-r——r——1 xray xray 1127 Oct 11 15:55 ca-cert. ls -ltr /opt/jfrog/xray/var/data/server/certs/ total 3pem -rw-r——r——1 x射线x射线993 10月11日15:55 client-cert。pem -rw-r—r—1 xray xray 1704 Oct 11 15:55 client-key.pem
Linux存档ls -ltr JFROG_HOME/xray/var/data/server/certs/ total 3 -rw-r——r——1 xray xray 1127 Oct 11 15:55 ca-cert. ls -ltr JFROG_HOME/xray/var/data/server/certs/ total 3pem -rw-r——r——1 x射线x射线993 10月11日15:55 client-cert。pem -rw-r—r—1 xray xray 1704 Oct 11 15:55 client-key.pem
cp ca-cert。pem server-cert。pem服务器密钥。cp -cert. pem $JFROG_HOME/xray/var/data/rabbitmq/certs cp ca-cert. pempem client-cert。pem client-key。pem JFROG_HOME美元/ x光/ var /数据/服务器/确实的事情
仅适用于自签名证书
为确保客户端信任(仅)自签名证书,需要根据所使用的操作系统执行以下步骤。
对于码头工人
你需要挂载一个根ca包到每个x射线容器中:
卷:—“/etc/localtime:/etc/localtime:ro”—“${ROOT_DATA_DIR}/var:/var/opt/jfrog/xray”—“/opt/jfrog/xray/app/第三方/rabbitmq/rabbitmq-root-ca.crt”:/etc/ssl/certs/ca-certificates.crt
Linux存档/本机操作系统:Debian 8/9/10, Ubuntu 16/18/20
将根证书复制到
/usr/local/share/ca-certificates /
然后运行update-ca-certificates
命令
.# cp rabbitmq-root-ca。/usr/local/share/ca-certificates/ # update-ca-certificates更新/etc/ssl/certs中的证书…加1,减0;完成了。在/etc/ca-certificates/ updated .d中运行钩子…添加debian: rabbitmq-root-ca。pem。完成了。
对于Linux Archive/Native OS: CentOS 6/7/8, RHEL 6/7/8
将根证书拷贝到/etc/pki/ca-trust/source/anchors/,然后执行update-ca-trust命令。
# cp rabbitmq-root-ca。CRT /etc/pki/ca-trust/source/anchors/ # update-ca-trust
注意,在CentOS 6/RHEL 6上,您必须运行一个额外的命令
- update-ca-trust force-enable
.在您将自己的根证书添加到系统包后-您可以使用以下命令验证证书:
# openssl verify -verbose /opt/jfrog/xray/var/data/server/certs/rabbitmq-client.使用实例crt / opt / jfrog / x光/ var /数据/服务器/证书/ rabbitmq-client。openssl verify -verbose /opt/jfrog/xray/var/data/rabbitmq/certs/rabbitmq-server. crt: OKcrt / opt / jfrog / x光/ var /数据/ rabbitmq /证书/ rabbitmq服务器。否则我们将得到错误# openssl verify -verbose /opt/jfrog/xray/var/data/server/certs/rabbitmq-client。crt / opt / jfrog / x光/ var /数据/服务器/证书/ rabbitmq-client。openssl verify -verbose /opt/jfrog/xray/var/data/rabbitmq/certs/rabbitmq-server. crt: CN = rabbitmq error 20 at 0 depth lookup:unable get local issuer certificate # openssl verify -verbose /opt/jfrog/xray/var/data/rabbitmq/certs/rabbitmq-server. crt: CN = rabbitmq error 20 at 0 depth lookup:unable get local issuer certificate #crt / opt / jfrog / x光/ var /数据/ rabbitmq /证书/ rabbitmq服务器。crt: CN = rabbitmq error 20 at 0深度查找:无法获取本地颁发者证书
修改RabbitMQ用户的证书权限。
码头工人组成chown -R 999:999 <挂载目录>/xray/var/data/rabbitmq/certs . chown -R 999:999 <挂载目录>/xray/var/data/rabbitmq/certs . chown
Deb / RPMchown -R xray:xray /opt/jfrog/xray/var/data/rabbitmq/certs . chown -R xray:xray /opt/jfrog/xray/var/data/rabbitmq/certs . chown -R xray
Linux存档##默认用户和组是xray:xray chown -R
: JFROG_HOME/xray/var/data/rabbitmq/certs . ## 修改Xray用户的证书权限。
码头工人组成chown -R 1035:1035 <挂载目录>/xray/var/data/server/certs . chown -R 1035:1035 <挂载目录>/xray/var/data/server/certs . chown
RPM / debchown -R x射线:x射线/opt/jfrog/x射线/var/data/server/certs/ . chown -R x射线:x射线/opt/jfrog/x射线/var/data/server/certs/
Linux存档##默认用户和组是xray:xray chown -R
: JFROG_HOME/xray/var/data/server/certs/ 修改
/ opt / jfrog / x光/ var / etc / system.yaml
(在共享文件夹下)根据您的配置。请勿覆盖系统中已有的行。yaml文件。
下面是系统示例。Yaml就是一个例子。##默认情况下,rabbitMq将一直运行。#autoStop: true node: rabbitmqConf: - name: ssl_options. share: rabbitMq:Cacertfile值:/var/opt/jfrog/xray/data/rabbitmq/certs/ca-cert.Pem - name: ssl_options。Certfile值:/var/opt/jfrog/xray/data/rabbitmq/certs/server-cert。Pem - name: ssl_options。密钥文件值:/var/opt/jfrog/xray/data/rabbitmq/certs/server-key。Pem - name: ssl_options。验证值:verify_peer - name: ssl_options。fail_if_no_peer_cert值:false - name: management.listener.ssl值:true - name: listener.ssl .默认值:5671 autoStop: true url: amqps://guest:password@rabbitmq:5671 password: password env: GODEBUG: "x509ignoreCN=0" RABBITMQ_ERLANG_COOKIE: "{{xray_first_node}}- erlang - cookie " RABBITMQ_NODENAME: "{{inventory_hostname_short}}" XRAY_CERT_FILE_PATH: "/opt/jfrog/xray/var/data/server/certs/client-cert. conf "pem" XRAY_CERT_KEY_FILE_PATH: "/opt/jfrog/xray/var/data/server/certs/client-key. pem" XRAY_CERT_KEY_FILE_PATH: "/opt/jfrog/xray/var/data/server/certs/client-key. pem""/opt/jfrog/xray/var/data/server/certs/ca-cert.pem" XRAY_CA_CERT_FILE_PATH: "/opt/jfrog/xray/var/data/server/certs/ca-cert.pem"
配置r
abbitmq.conf
(rabbitmq XRAY_HOME美元/ app / bin / / rabbitmq.conf
)文件以使用证书。
下面的rabbitmq.conf示例给出了一个例子。听众。tcp = none listeners.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
运行REST API调用e在x射线中为RabbitMQ建立TLS连接。
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}' 将
和 替换为Artifactory的admin用户和密码凭证,将 替换为实际的Artifactory URL。 运行以下步骤e如果你使用Docker Compose,可以在Xray中使TLS连接到RabbitMQ。
码头工人组成CD <提取的合成目录>/jfrog-xray的路径-<版本>-合成/
在docker-compose-rabbitmq中导出TLS端口。yaml (docker-compose。Yaml为旧版本的3.x)和添加下的服务-> rabbitmq ->端口。——5671:5671
#重启RabbitMQ服务docker-compose -p xray-rabbitmq -f docker-compose- RabbitMQ。Yaml down docker-compose -p xray-rabbitmq -f docker-compose-rabbitmq。Yaml up -d
重启x射线服务.
码头工人组成Docker-compose -p x射线-f Docker-compose。Yaml down docker-compose -p x射线-f docker-compose。Yaml up -d
RPM / debSystemctl停止x射线。Service systemctl start x射线。对于Centos 6和RHEL 6, service ## service xray stop # service xray start
Linux存档/opt/jfrog/xray/bin/xray.sh stop /opt/jfrog/xray/bin/xray.sh start
Xray服务启动并运行后,您可以验证RabbitMQ是否可访问
https:// < xray-ipaddress-or-hostname >: 15672
.
在Xray中使用TLS解决RabbitMQ故障
如果您遇到任何错误或问题,您可能会发现以下故障排除有帮助,
- 确保您拥有正确的证书,并且它们的位置是正确的。的
JFROG_HOME美元
变量表示安装Xray的目录。默认为/ opt / jfrog
. 在某些操作系统中,
openssl.cnf
文件可能位于不同的位置/etc/ssl/openssl.cnf
.使用find命令在系统中查找它。找到/ -name openssl.cnf
- 检查所有的证书都属于用户和组
x光
.如果使用不同的用户和组运行Xray,请确保该用户是文件的所有者。 - YAML文件必须有适当的缩进,在整个文件中使用相同数量的空格。确保x光片
system.yaml
文件的缩进正确且语法正确。另外,检查YAML文件中的详细信息是否正确,例如密码、路径和url是否正确。 - 一个成功的REST API调用需要一个Artifactory管理用户。
- 检查日志以查找其他信息,以帮助进一步排除任何问题。logs目录为
$ JFROG_HOME / x光/ var / log
.推荐查看的日志有console.log
,xray-server-service.log
,RabbitMQ登录到“RabbitMQ”目录下。
信任自签署证书
当x射线实例/节点配置为经过SSL代理它使用了自签名证书时,您在执行任务时可能会遇到以下问题在线数据库同步:
2021-07-20T14:47:47.500Z [33m[jfxr][0m [1m[31m[ERROR][0m [c080f44e606d159][samplers:91][main]读取jxrayUrl响应失败。错误:获取“https://jxray.jfrog”。Io /api/v1/system/ping": x509:未知授权机构签署的证书
- 要解决此问题,需要导入代理证书成每一个x射线实例/pod,将其放置在x射线机/容器/pods中的以下路径下:
/etc/ssl/certs/
. - 接下来,您需要重新启动x射线。
上面显示的路径是Go应用程序(如Xray)在导入SSL证书时使用的默认目录。