【问题标题】:Should use the same Java keystore for SSL and HTTPS communication?应该为 SSL 和 HTTPS 通信使用相同的 Java 密钥库吗?
【发布时间】:2016-08-30 02:42:00
【问题描述】:

一点上下文

我有 3 个实例在运行 ZookeeperActiveMQ。 我想让我的通信安全,所以我必须担心 3 件事:

  • follower 和 leader 如何通信(Zookeeper 的法定人数)
  • ActiveMQ 消费者如何与其通信(应用程序/SSL)
  • 我的团队如何访问 ActiveMQ WebConsole (https)

好的,第一种情况is not possible according to Zookeeper documentation.

在我的第二个案例中;我已经创建了我自己的 CA 证书,以及我自己的证书和密钥库。这就是我在 /etc/activemq/conf/activemq.xml 上使用它们的方式:

...
    <persistenceAdapter>

        <replicatedLevelDB
            directory="${activemq.data}/leveldb"
            replicas="3"
            bind="tcp://0.0.0.0:61616"
            zkAddress="activemq1.company.com:2881,activemq2.company.com:2881,activemq3.company.com:2881"
            zkPassword="password"
            zkPath="/activemq/leveldb-stores"
            hostname="activemq3.company.com"
        />


    </persistenceAdapter>
    <sslContext>
        <sslContext keyStore="/usr/share/ca-certificates/company/activemq/keystore" keyStorePassword="password-2" trustStore="/usr/share/ca-certificates/company/activemq/trustore" trustStorePassword="password-2" />
    </sslContext>
...

最后,我的第三个案例;为了获得有效的证书颁发机构,我使用Let'sEncrypt api 生成新的有效证书,并使用它们创建一个新的密钥库;像这样使用:

...
<!--
    Enable this connector if you wish to use https with web console
-->
<bean id="SecureConnector" class="org.eclipse.jetty.server.ServerConnector">
        <constructor-arg ref="Server" />
                <constructor-arg>
                        <bean id="handlers" class="org.eclipse.jetty.util.ssl.SslContextFactory">
                                <property name="keyStorePath" value="${activemq.conf}/keystore.jks" />
                                <property name="keyStorePassword" value="password-3" />
                        </bean>
                </constructor-arg>
        <property name="port" value="8162" />
</bean>
...

问题

我应该使用 Let'sEncrypt 生成的同一个密钥库来进行 SSL 和 HTTPS 通信吗?还是我应该将它们分开以采取更多(也许?)安全措施?

【问题讨论】:

    标签: java ssl https activemq apache-zookeeper


    【解决方案1】:

    当然可以共享一个证书。, 但我通常给每个服务器它自己的证书(客户端证书)我会推荐由同一个 CA 单独签名。

    【讨论】:

    • 因此,对于每台服务器,我应该使用 Let'sEncript 生成一个新证书,然后将它们全部导入我的新密钥库/信任库。是吗,杰瑞尔?
    • 从未尝试过“letsEcnrypt”(但看起来很酷!),但我确定这意味着您从他们那里获得了一个“trustStoreKey 并通过”。您将在两台服务器上使用相同的 trustStore。然后生成密钥库证书(又名服务器证书)将是每台服务器上的一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2013-01-02
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多