云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

通过设置TLS证书,支持Xray到PostgreSQL或RabbitMQ的加密连接。

页面内容


在x射线上使用TLS支持保护PostgreSQL

  1. 将这些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'
  2. 验证证书是否具有正确的权限。

    Chown postgres/ full/path/to/postgres/certificates/* && \ CHGRP postgres/ full/path/to/postgres/certificates/* && \ chmod 600 /full/path/to/postgres/certificates/*
  3. 更改/ . 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
  4. 确保您有一个x射线用户和组。

    Groupadd -g 1035 x射线&& \ adduser x射线——uid 1035——gid 1035
  5. 为证书分配权限。

    Chown xray/ full/path/to/xray/certificates/* && \ CHGRP xray/ full/path/to/xray/certificates/* && \ chmod 600 /full/path/to/xray/certificates/*
  6. 重新启动所有的x光服务。

    重启/opt/jfrog/xray/scripts/xray.sh

在x射线上使用TLS支持保护RabbitMQ

  1. 创建一个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. 2 .执行如下命令生成RabbitMQ和Xray的证书

    在命令中,subjectAltName,为示例和值应该是可解析的DNS。并应在系统中使用。在提供shared.rabbitMq.url时使用yaml文件步骤6).


    1. 创建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"
    2. 签署CA私钥CA -key。pem,并创建相应的CA证书。

      Openssl x509 -req -in ca.csr -text -extfile Openssl .cnf -extensions v3_ca -signkey ca-key。导出ca-cert.pem
    3. 创建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"
    4. 创建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
    5. 创建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"
    6. 创建x射线客户端证书文件。

      Openssl x509 -req -in客户端。csr -text -extfile openssl.cnf -extensions v3_ca -CA ca-cert. xmlpem -CAkey ca-key。输出client-cert.pem
  3. 创建确实的事情目录下美元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
  4. 将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 / deb
    ls -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深度查找:无法获取本地颁发者证书
  5. 修改RabbitMQ用户的证书权限。

    码头工人组成
    chown -R 999:999 <挂载目录>/xray/var/data/rabbitmq/certs . chown -R 999:999 <挂载目录>/xray/var/data/rabbitmq/certs . chown
    Deb / RPM
    chown -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 . ##
  6. 修改Xray用户的证书权限。

    码头工人组成
    chown -R 1035:1035 <挂载目录>/xray/var/data/server/certs . chown -R 1035:1035 <挂载目录>/xray/var/data/server/certs . chown
    RPM / deb
    chown -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/
  7. 修改/ 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"
  8. 配置rabbitmq.confrabbitmq 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
  9. 运行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。

  10. 运行以下步骤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
  11. 重启x射线服务

    码头工人组成
    Docker-compose -p x射线-f Docker-compose。Yaml down docker-compose -p x射线-f docker-compose。Yaml up -d
    RPM / deb
    Systemctl停止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
  12. 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.logxray-server-service.logRabbitMQ登录到“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:未知授权机构签署的证书
  1. 要解决此问题,需要导入代理证书每一个x射线实例/pod,将其放置在x射线机/容器/pods中的以下路径下:/etc/ssl/certs/
  2. 接下来,您需要重新启动x射线。
    上面显示的路径是Go应用程序(如Xray)在导入SSL证书时使用的默认目录。
  • 没有标签
版权所有©2022 JFrog Ltd.