当前位置: 首页 > 知识库问答 >
问题:

加密密码在activemq中不起作用

孔驰
2023-03-14

我正在尝试加密用于建立和连接到ActiveMQ队列的密码。我正在跟进这里的步骤,我能够使用新的activemq-security.xml文件启动ActiveMQ。我有一个脚本试图创建并连接到队列,但我不断收到用户名或密码无效的错误。

我为消费者用户加密了密码,并将加密的密码存储在credentials-enc.properties文件中,如下所示:

consumer.password=ENC(awknernfjewnwk)

我尝试了不同的方法,我确信由于某种原因,credentials-enc.properties没有被选中,下面是它的定义:

        <beans
          xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

        <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
          <property name="algorithm" value="PBEWithMD5AndDES" />
          <property name="passwordEnvName" value="ACTIVEMQ_ENCRYPTION_PASSWORD" />
        </bean>

        <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
          <property name="config" ref="environmentVariablesConfiguration" />
        </bean>

        <bean id="propertyConfigurer" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
          <constructor-arg ref="configurationEncryptor" />
          <property name="location" value="file:${activemq.base}/conf/credentials-enc.properties"/>
        </bean>

   <!-- Allows accessing the server log -->
    <bean id="logQuery" class="io.fabric8.insight.log.log4j.Log4jLogQuery"
          lazy-init="false" scope="singleton"
          init-method="start" destroy-method="stop">
    </bean>

    <!--
        The <broker> element is used to configure the ActiveMQ broker.
    -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" advisorySupport="false" dataDirectory="${activemq.data}">
        <plugins>
             <simpleAuthenticationPlugin>
                    <users>
                        <authenticationUser username="admin" password="admin"
                            groups="admins"/>
                        <authenticationUser username="consumer" password="$(consumer.password)"
                            groups="readers"/>
                        <authenticationUser username="producer" password="$(producer.password)"
                            groups="writers"/>
                    </users>
                </simpleAuthenticationPlugin>
              <authorizationPlugin>
               <map>
                <authorizationMap>
                   <authorizationEntries>
                     <authorizationEntry queue=">" read="readers" write="admins" admin="admins" />
                     <authorizationEntry queue="CLIMATE" read="readers" write="writers" admin="admins" />
                     <authorizationEntry topic=">" read="admins,readers" write="admins,writers" admin="admins" />
                   </authorizationEntries>
                   <tempDestinationAuthorizationEntry>
                     <tempDestinationAuthorizationEntry read="admins" write="admins" admin="admins"/>
                   </tempDestinationAuthorizationEntry>
                </authorizationMap>
              </map>
           </authorizationPlugin>
          </plugins>
        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" >
                    <!-- The constantPendingMessageLimitStrategy is used to prevent
                         slow topic consumers to block producers and affect other consumers
                         by limiting the number of messages that are retained
                         For more information, see:

                         http://activemq.apache.org/slow-consumer-handling.html

                    -->
                  <pendingMessageLimitStrategy>
                    <constantPendingMessageLimitStrategy limit="1000"/>
                  </pendingMessageLimitStrategy>
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>

传输连接器的配置

<transportConnectors>
    <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>

知道原因吗?

提前感谢!

共有1个答案

司寇高峯
2023-03-14

问题很简单,事实上,您使用变量$(producer.password),但这是错误的,您需要${producer.password}!!

这就是全部。

请注意,必须创建队列“CLIMATE”,因为用户“消费者”不在管理员组中并且无法创建它。

 类似资料:
  • 我们是ActiveMQ新手,已经阅读了关于加密密码的文档。 本文档介绍如何设置环境变量(即ACTIVEMQ\u ENCRYPTION\u PASSWORD)以保存加密密码,启动ACTIVEMQ,然后取消设置该环境变量。但是,在服务器重启的情况下,这将如何工作呢?我们无法将该加密密码放入任何systemd服务文件。 我们的安全策略不允许加密密码保留在任何配置或设置文件中,特别是因为解密机制也可以通过

  • 我必须在jetty领域中去掉ActiveMQ服务器中的明文密码。属性文件是我们项目安全要求的一部分。 我按照此处找到的密码加密过程进行了操作:https://activemq.apache.org/encrypted-passwords.html.在Jetty real。属性我将普通密码替换为${activemq.password} 但我无法登录web控制台(http://localhost:81

  • 我做了一个简单的文件加密/解密器。它将模式和要操作的文件作为参数。加密时,它生成随机字符串并使用该字符串加密文件。解密文件时,它会提示用户输入密码,并在解密时使用该密码。 我的问题是,解密时得到的不是明文,而是胡言乱语,尽管我小心翼翼地将相同的密钥写入输入。 非常感谢James K Polk提供的加密/解密代码!

  • 我安装了Tomcat-7,在端口8443上配置了对TLSV1.2的支持。 我的连接器配置: protocol=“org.apache.coyote.http11.http11nioprotocol”sslenabled=“true”scheme=“https”secure=“true”sslprotocol=“tlsv1.2”sslenabledprotocols=“tlsv1.2”sslenab

  • 我是angular 5的新用户,在这里我试图根据一些条件来验证用户密码。 < li >最少六个字符,至少一个字母和一个数字 < li >最少八个字符,至少一个字母、一个数字和一个特殊字符 < li >最少八个字符,至少一个大写字母、一个小写字母和一个数字 用户可以为密码字段选择上述模式之一,验证错误消息将相应地更改。 对我来说,上述条件都不能正常工作。 有人能帮我解答一下吗? 注意:如果我直接用超

  • 我正在使用JavaEE(servlet JSP)开发一个WebApp。 我发现了一个问题,当我想写一些密码在我的应用程序,如SMTP密码。当我调试的时候,我已经用普通的方式写了它,在代码中或者在属性文件中,但是我想以某种方式对它们进行加密。 我在发展阶段做什么: 我怎么能这么做?有什么想法/例子吗?