配置rabbitmq https SSL,springboot连接rabbitmq https

Create Certificate Authority

生成root certificate

cd /etc/rabbitmq/certs
openssl req -x509 -sha256 -days 356 -nodes -newkey rsa:2048 -subj "/CN=demo.mlopshub.com/C=US/L=San Fransisco" -keyout rootCA.key -out rootCA.crt

Create the Server Private Key

openssl genrsa -out server.key 2048

创建 csr.conf文件,填写证书的信息

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = US
ST = California
L = San Fransisco
O = MLopsHub
OU = MlopsHub Dev
CN = demo.mlopshub.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = demo.mlopshub.com
DNS.2 = www.demo.mlopshub.com
IP.1 = 192.168.1.5
IP.2 = 192.168.1.6 

这里注意subjectAltName 的配置,如果这个证书要在多台服务器上使用,需要把域名或者IP都配置进来

生成CSR(certificate signing request)文件

openssl req -new -key server.key -out server.csr -config csr.conf

创建cert.conf

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = demo.mlopshub.com

生成SSL certificate With self signed CA

openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile cert.conf

这样我们就得到了rootCA.crt,公钥server.crt,私钥 server.key
在这里插入图片描述

安装rabbitmq

参考: https://computingforgeeks.com/installing-rabbitmq-on-centos-6-centos-7/

配置https

touch /etc/rabbitmq/rabbitmq.config
vi /etc/rabbitmq/rabbitmq.config
[
  {rabbit, [
     {tcp_listeners, [5672]},
     {ssl_listeners, [5671]},
     {ssl_options, [{cacertfile, "/etc/rabbitmq/certs/rootCA.crt"},
                    {certfile,   "/etc/rabbitmq/certs/server.crt"},
                    {keyfile,    "/etc/rabbitmq/certs/server.key"},
                    {verify, verify_none},
                    {fail_if_no_peer_cert, false},
                    {versions, ['tlsv1.2']}
                    ]}
   ]},
  {rabbitmq_management, [
    {listener, [
      {port, 15672},
      {ip, "your ip"},
         {ssl, true},
         {ssl_opts,
           [{cacertfile, "/etc/rabbitmq/certs/rootCA.crt"},
                {certfile, "/etc/rabbitmq/certs/server.crt"},
                {keyfile, "/etc/rabbitmq/certs/server.key"}
               ]}
    ]}
 ]}
].
ssl:
      enabled: true
      algorithm: TLSv1.2

重启rabbitmq 启动springboot

sudo systemctl restart rabbitmq-server

这时大概率你会遇到这个问题:

图片()
在这里插入图片描述

这个比较坑,这个报错根本看不出是什么问题,日志信息太模糊了。其实是因为我们证书的权限问题。

修改证书的权限

sudo chown -R rabbitmq:rabbitmq /etc/rabbitmq/certs/
sudo chmod 777 /etc/rabbitmq/certs/rootCA.crt.
sudo chmod 777 /etc/rabbitmq/certs/server.crt
sudo chmod 777 /etc/rabbitmq/certs/server.key

在这里插入图片描述

仔细检查路径是否有错,每一个字符都不能错

{cacertfile, "/etc/rabbitmq/certs/rootCA.crt"},
                {certfile, "/etc/rabbitmq/certs/server.crt"},
                {keyfile, "/etc/rabbitmq/certs/server.key"}

我之前因为不小心吧key放在了certfile,导致failed to check/redeclare auto-delete queue(s),
检查了半天,log也不会直接告诉你是证书路径的问题,这种问题仔细一点其实可以避免,我自己检讨自己。。。

添加user

sudo rabbitmqctl add_user username password
sudo rabbitmqctl set_user_tags username administrator
sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

然后再重启rabbitmq

sudo systemctl restart rabbitmq-server

这时可看到下面的界面, 说明management UI配置成功了
在这里插入图片描述
登录看看端口
在这里插入图片描述

springboot连接rabbitmq https

再客户端只需要添加rootCA.crt到jdk的cacerts
D:\jdk\zulu11.54.25-ca-jdk11.0.14.1-win_x64\lib\security

keytool -import -alias -aliasName -file /etc/rabbitmq/rootCA.crt -keystore  jdk_home/lib/security/cacerts

替换jdk_home为你的jdk安装目录,applicatio.yml里面的配置不需要更改

spring:
  rabbitmq:
    host: ip_address
    port: 5671
    username: username
    password: password
    ssl:
      enabled: true
      algorithm: TLSv1.2
    listener:
      simple:
        retry:
          enabled: true
          max-attempts: 5
          initial-interval: 2000
        default-requeue-rejected: false

然后启动你的springboot项目。大功告成。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中配置SSL访问RabbitMQ,需要遵循以下步骤: 1. 生成证书 首先,需要生成一个证书,用于启用SSL连接。可以使用以下命令生成一个自签名的证书: ``` keytool -genkeypair -alias rabbitmq -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore rabbitmq.p12 -validity 3650 ``` 该命令将生成一个名为`rabbitmq.p12`的证书文件。在生成证书时,需要注意以下几点: - `alias`参数用于指定证书别名,可以根据需要进行更改。 - `storetype`参数用于指定证书存储类型,这里使用`PKCS12`格式。 - `validity`参数用于指定证书有效期,这里为10年。 2. 配置RabbitMQ 接下来,需要在RabbitMQ上启用SSL连接。在RabbitMQ服务器上,需要将证书文件`rabbitmq.p12`复制到`/etc/rabbitmq/ssl`目录中,并将其权限设置为`644`。然后,需要创建一个RabbitMQ配置文件,指定SSL参数和证书路径: ``` ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = false ssl_options.cacertfile = /etc/rabbitmq/ssl/ca_certificate.pem ssl_options.certfile = /etc/rabbitmq/ssl/server_certificate.pem ssl_options.keyfile = /etc/rabbitmq/ssl/server_key.pem ssl_options.password = password ssl_options.versions = ['tlsv1.2'] ``` 其中,`cacertfile`参数指定CA证书路径,`certfile`参数指定服务器证书路径,`keyfile`参数指定服务器私钥路径,`password`参数指定证书密码。`versions`参数指定支持的TLS版本。 3. 在Spring Boot中启用SSL连接 最后,需要在Spring Boot应用程序中启用SSL连接。可以在`application.properties`文件中添加以下配置: ``` spring.rabbitmq.ssl.enabled=true spring.rabbitmq.ssl.key-store-type=PKCS12 spring.rabbitmq.ssl.key-store=classpath:rabbitmq.p12 spring.rabbitmq.ssl.key-store-password=password spring.rabbitmq.ssl.trust-store-type=PEM spring.rabbitmq.ssl.trust-store=classpath:ca_certificate.pem ``` 其中,`key-store-type`参数指定证书类型,`key-store`参数指定证书路径,`key-store-password`参数指定证书密码。`trust-store-type`参数指定CA证书类型,`trust-store`参数指定CA证书路径。 现在,应用程序应该能够使用SSL连接RabbitMQ了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值