应该使用相同的Java密钥库进行SSL和HTTPS通信吗?

时间:2016-05-04 15:00:30

标签: java ssl https activemq apache-zookeeper

上下文

我有3个实例正在运行ZookeeperActiveMQ。 我想让我的沟通安全,所以我不得不担心三件事:

  • 追随者和领导者如何沟通(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通信?或者我应该将它们分开以保持更多(可能是?)安全措施?

1 个答案:

答案 0 :(得分:1)

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