Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Artemis中双向SSL和单一身份验证的区别_Ssl_Ssl Certificate_Activemq Artemis - Fatal编程技术网

Artemis中双向SSL和单一身份验证的区别

Artemis中双向SSL和单一身份验证的区别,ssl,ssl-certificate,activemq-artemis,Ssl,Ssl Certificate,Activemq Artemis,我有3个代理(1个主代理和2个从代理)的Artemis设置,并且希望在它们和客户端之间使用SSL。现在我正在使用像这样生成的自签名证书 #创建代理密钥和证书-将密钥对和证书导入代理密钥库 openssl请求-新密钥rsa:2048-节点-密钥输出代理\u keypair.pem-x509-65000天-密钥输出代理\u cert.pem openssl pkcs12-inkey broker_keypair.pem-in broker_cert.pem-export-out broker_ks.

我有3个代理(1个主代理和2个从代理)的Artemis设置,并且希望在它们和客户端之间使用SSL。现在我正在使用像这样生成的自签名证书

#创建代理密钥和证书-将密钥对和证书导入代理密钥库
openssl请求-新密钥rsa:2048-节点-密钥输出代理\u keypair.pem-x509-65000天-密钥输出代理\u cert.pem
openssl pkcs12-inkey broker_keypair.pem-in broker_cert.pem-export-out broker_ks.p12
#创建客户端密钥和证书-将密钥对和证书导入客户端密钥库
openssl请求-新密钥rsa:2048-节点-密钥输出客户端\u keypair.pem-x509-65000天-输出客户端\u cert.pem
openssl pkcs12-inkey client_keypair.pem-in client_cert.pem-export-out client_ks.p12
#为代理创建信任库,并导入客户端的证书。这表明经纪人“信任”客户:
keytool-import-alias client-keystore broker_ts.p12-file client_cert.pem-deststoretype pkcs12
#为客户端创建信任库,并导入代理的证书。这表明客户“信任”经纪人:
keytool-import-alias broker-keystore client_ts.p12-file broker_cert.pem-deststoretype pkcs12
master的my broker.xml:


0.0.0.0
符合事实的
异步
数据/分页
数据/绑定
数据/日志
数据/大型消息
符合事实的
2.
10
4096
10米
28000
4096
5000
100
符合事实的
120000
60000
停止
1628000
204Mb
tcp://amq1:61616?sslEnabled=true;keystrepath=客户机_ks.p12;keystrepassword=artemis;trustStorePath=client_ts.p12;trustStorePassword=artemis
tcp://amq1:61616?sslEnabled=true;keystrepath=broker_ks.p12;keystrepassword=artemis;trustStorePath=broker\u ts.p12;trustStorePassword=artemis;needClientAuth=true
amq
网状连接器
1000
3.
符合事实的
严格的
amq1
9876
231.7.7.7
9876
2000
网状连接器
amq1
9876
231.7.7.7
9876
10000
amq1、amq2、amq3
5000
1000
ping-c 1-t%d%s
ping6-c1%2$s
符合事实的
DLQ
过期队列
0
-1
10
页
符合事实的
符合事实的
符合事实的
符合事实的
DLQ
过期队列
0
-1
10
页
符合事实的
符合事实的
符合事实的
符合事实的
DLQ
1000
3.
-1
1048576
10
页
对于slave来说,它几乎是相同的结构。我不会发的

它是正确的配置,还是过度设计,只能用于单一身份验证?如果是,它会是什么样子


谢谢

大多数SSL用例都使用单向SSL。在这些情况下,服务器(无论是web服务器、文件服务器、消息代理等)承载SSL证书,客户端必须“信任”该证书才能成功完成SSL握手。通常,服务器的SSL证书由受信任的机构(例如,等)签名,客户端隐式信任它们。这就是绝大多数SSL在web上的实现方式

但是,在使用“自签名”证书时,正如您所做的那样,服务器的证书不是由受信任的机构签名的,因此客户端必须手动将证书导入其“信任存储”

使用双向(或“双向”)SSL,服务器和客户端都有SSL证书,服务器和客户端都必须信任另一方的证书才能成功完成SSL握手。这种配置相对较少,通常仅在高度安全的环境中需要,在这些环境中,各方必须建立明确的信任。它对于ActiveMQ Artemis客户端也很有用,因为可以使用证书详细信息代替用户名和密码进行身份验证。有关此配置的详细信息,请参阅

由于您在
broker.xml
中的
acceptor
上指定了
needClientAuth=true
,因此您需要双向SSL。各国:

needClientAuth

此属性仅适用于
接受器
。它告诉连接到此接收器的客户端需要双向SSL。有效值为
true
false
。默认值为
false

使用双向SSL可能是一个巨大的配置负担,因为它需要对客户端和服务器上的每个客户端进行工作(即生成和导入/信任适当的证书)

单向SSL的配置要简单得多。例如,您只需要运行以下命令:

# Create a broker key and cert - import the keypair and cert into the broker keystore
openssl req -newkey rsa:2048 -nodes -keyout broker_keypair.pem -x509 -days 65000 -out broker_cert.pem
openssl pkcs12 -inkey broker_keypair.pem -in broker_cert.pem -export -out broker_ks.p12

# Create a truststore for the client, and import the broker's certificate. This establishes that the client "trusts" the broker:
keytool -import -alias broker -keystore client_ts.p12 -file broker_cert.pem -deststoretype pkcs12
您的
连接器
接受器
的配置如下:


tcp://amq1:61616?sslEnabled=true;trustStorePath=client_ts.p12;trustStorePassword=artemis
tcp://amq1:61616?sslEnabled=true;密钥复制=