使用SSL配置rabbitmq的问题

时间:2015-08-07 10:36:09

标签: ssl rabbitmq

我正在尝试使用SSL支持设置rabbitmq。但是,连接客户端收到错误以及日志中出现的错误:

=ERROR REPORT==== 7-Aug-2015::07:44:48 ===
STOMP detected network error on <0.11577.0> (172.31.80.14:50841 -> 172.23.115.104:61614):
{ssl_upgrade_failure,
    {{{badmatch,
          {error,
              {asn1,
                  {'Type not compatible with table constraint',
                      {{component,'Type'},
                       {value,{5,<<>>}},
                       {unique_name_and_value,id,{1,2,840,113549,1,1,11}}}}}}},
      [{public_key,pkix_decode_cert,2},
       {ssl_cipher,filter,2},
       {ssl_handshake,select_session,8},
       {ssl_handshake,hello,4},
       {ssl_connection,hello,2},
       {ssl_connection,next_state,3},
       {gen_fsm,handle_msg,7},
       {proc_lib,init_p_do_apply,3}]},
     {gen_fsm,sync_send_all_state_event,[<0.11578.0>,start,5000]}}}

我们正在使用我们使用openssl工具链创建的证书以及我们也创建的ca证书。

我的知识有点简短,但我相信证书已正确生成。我意识到erlang版本已经过时了,我已经启用了使其不安全的配置属性,但我无法访问更新的RHEL版本。

环境

  • Erlang R14B04
  • Rabbitmq 3.5.1
  • RHEL 6 2.6.32-431.29.2.el6.x86_64

rabbitmq.config

[
    {rabbit,
        {tcp_listeners, [5672]}, 
        {ssl_listeners, [5671]},
        {ssl_allow_poodle_attack, true},
        {ssl_options, [
            {cacertfile, "/etc/httpd/ssl/ca.crt"},
            {certfile,"/etc/httpd/ssl/vitel-asl.crt"},
            {keyfile, "/etc/httpd/ssl/vitel-asl.key"},
            {verify, verify_peer},
            {ssl_cert_login_from, common_name},
            {fail_if_no_peer_cert, true}]
        },
        {rabbitmq_stomp, [
            {ssl_listeners, [61614]}
        ]}
    }
].

TLS

ca.crt

-----BEGIN CERTIFICATE-----
MIIE5jCCAs4CCQDhrk7+xXC1CjANBgkqhkiG9w0BAQsFADA1MRwwGgYDVQQDExNB
c3RlcmlzayBQcml2YXRlIENBMRUwEwYDVQQKEwxNTUkgSG9sZGluZ3MwHhcNMTUw
ODA1MDkwNjAyWhcNMTYwODA0MDkwNjAyWjA1MRwwGgYDVQQDExNBc3RlcmlzayBQ
cml2YXRlIENBMRUwEwYDVQQKEwxNTUkgSG9sZGluZ3MwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCuSEbXZbTcd6HKz5l3V2CdkTHOpYxYbhjR1Yhsp4q1
DNY20YSD5UcsgrrwsXwUgjVDj0EhCPv4cZ8ae7RbuIBpTyG0LZtdy/W6fvREHjbG
+7BtbkRBY2PoV351Q0YP/rRs3fmjdreiJ5wHWqbU46EUtrtUmJgOTRRrxnfbweq0
Hxf1ScWworTRgMJ7z6V6rth0e5Z0N/qi2JLuHeoIpY8419d4ZYfgo3/X75b6+vS7
QlkpmTLyLMnI+SSPVv7h+qh7xo1Scm/urN9vHtBPloCFVJbYhW4rSomV8rmgN8il
Bymr9muSHmGa2CY0viMDdec5htUCaq4ABrCaX+2r0rDGw9OImRQXli6pcAWAog4F
g03eNVokBA+eW8SKwZgPZWJdVYbB77P5eJW/ewzhOnKQsomayy9qQF6L4+JjpY75
GfPPw1gMqrLaFbXeUo0e6YOqGkiYgxKJlF40VhBT/fYJeA8TrZIc75x9zrkg3p8u
1eJTFblrjUoEnlyxxy+s31WJJs575kKXMa6j6XEktRK6VaORALGCILAf4D4qjshA
5v95CLJrMQ9gdUKQnpD0k7qmoqKlUjyj8A79+btxbB45EJJfuzwOSdZ2XsX/N+UH
I7cwmFubZT8sawMtMquaJLSqWvMD6/wh2PDOigWa6LEkbgXQ9Xvf0yNl2oRQeiRL
IwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQCPi054wa63XI41tl9JqfBSNYQQYKID
lj0H099zIG1QPWRt9wt5C//PHfZAUdRuFf/Qb7TL8YptqMDuMlPVma3I5KszCOiq
W5z/S/OOj0tI3rjstr46bbV6Nlo/eag6kUSGrLQgbXr0Zq7JNmJn8SNjKrjnNw0g
9X0BcXB9pABT/SJ6sVCg0IyT8vMfa6rUMQelbENIS6ibIFM/lAezggDz8nIEMQe4
X7AFsUcmAITApN79IDJf4S7ZyroClXL6wxnmnhQD6YLlR2rQGrzzE+pXsFKFPopr
sfixVniwAAUJtYx+nfTebIwK9RrOZ3n+ViXbgD7cE6ArkxwItl+iLr3T5+yOz27l
8vALfBEC5DXjCF4swySNSuNxq8IKSV1k87U3nnD4L8+eEyyJ+4OZbAIjdVe9gEF5
D2h6x9G2ZN7Dn52ysVwn8is0uqYbPBSMKJnTYxmdQO7MEFCc+FQrVvsjJanGkUbn
ogCCRLIC9lE1lYCkY9JOSlzCQYwmhzy0dLEokwJcxOFKqWgympHUMO/K7t0UH3xw
rL556Jb5U1XHFoGm5HCn4DPrCl08b8fGQHa/Fc3krtx7UULNbIEvve/eQRbF+MzR
Ym6Kujr3a3WPom2gmudgT6Eu5kJSIhnIqBnaeNzL+rwel3kQE8Jbhhc52ZKkqlav
3yPO14z2RLrqgA==
-----END CERTIFICATE-----

维泰尔-asl.crt

-----BEGIN CERTIFICATE-----
MIIDXTCCAUUCAQEwDQYJKoZIhvcNAQELBQAwNTEcMBoGA1UEAxMTQXN0ZXJpc2sg
UHJpdmF0ZSBDQTEVMBMGA1UEChMMTU1JIEhvbGRpbmdzMB4XDTE1MDgwNTA5MDYw
OFoXDTE2MDgwNDA5MDYwOFowODEfMB0GA1UEAxMWY3B0bHRhcDgwLnphLm1oZ2Fk
LmNvbTEVMBMGA1UEChMMTU1JIEhvbGRpbmdzMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDgd4WbTWYtWB3rAByUUzWTOeJe0zGspUIY0gg9NH8GBbZeIcCuSr+C
jR+oKcc9aBoeqg15i1/x8P5fMnVBfYQYUr2Bna5rqQIXu80lg9frcd69ZnGXnJIG
lhYJpUarAVgC3CYJI4CtgPP2mFBMbo66J8KYh57iQJIYfJ/tcfd6jwIDAQABMA0G
CSqGSIb3DQEBCwUAA4ICAQAbpTWu9kUkCusxFz4oHKZNv6qml2Q35Saeed0H909M
ozoZa4LgP6+WzvKiGyVMufo4UEgXNJRfjsETlwTR9+YGSd/J4AinBxwdtgnQXnQt
8SBNOESLpEwTjVYaMD9BCNfN/ze0PSs4O/AlbXW1POXzej0WmPyC4a1R4haQqolO
wbY8aBm6PJz3oD2D1pQuB7KPfYjGEdH+c1cMxP5JdJ9KeFGziayDGYyHOEr6lz53
lOHMuc/iG4UDCGwIqDFfoocdLXhewu/yJW8SFy1g5uyt2T7cDE6v2Qy9NzMRcxaO
GQgzMwNZdS+B4PgSY2opzfn9T/vEu263jv9mxw/ExS0+NjRRLXo6UYbdm6hI1ePj
RzMtJEFrVlPUsFjvOGfyHNy0ibScSumOyCWIrOLs0X3ZHlYvK43r+h09Lnxm4kOb
Vho1ksAnKTw8uOK/soEp83QdyiMlZI4Mr2lYY3KxV6VfKOABNCMXwh/oWAxt3ccL
1/fhcU5WlBIIVsnWZEbFv57kajl65fqxhoEKxN4VjV2cK2vZJ48Ctl4n0CgVottT
b1eZ4bIyig6aVe38iHVS8I8gEcAx4cA8EfxmxVtRL1fZegPcQqS1DP6TE5cD6ifH
givUhHSrMHlP5iPnvSYBEdvshIm3SCwUjwnTHU/eoYrtejyRnyxxQSVJF6N7T1Yz
jw==
-----END CERTIFICATE-----

维泰尔-asl.key

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDgd4WbTWYtWB3rAByUUzWTOeJe0zGspUIY0gg9NH8GBbZeIcCu
Sr+CjR+oKcc9aBoeqg15i1/x8P5fMnVBfYQYUr2Bna5rqQIXu80lg9frcd69ZnGX
nJIGlhYJpUarAVgC3CYJI4CtgPP2mFBMbo66J8KYh57iQJIYfJ/tcfd6jwIDAQAB
AoGAY6Xr1EQKBjtGHNtR1K8T66YYzovnU4OR0j77lWBGu7+xdBx702QvnJ9V3Guf
na0nW1GW5cxv7ZJU+qIF1+sGxoiuHluRxUmR4wvr5KWIpyr5FOf+oXo/Ce/rk7/+
FSIMHDY2Eb9ICZAiUtD+lI1Yv5HXOX12YvJweXQtAKTYiTECQQDwFWy4bwMkWHl/
2EI4sym0+83MmGLB73tnJPzhpu8yrvLBIIvswLvSvqv5yXWgGY6SVwZjEkZUB92O
E4CnSDwFAkEA71kOkBtXmDiq+hibaQOGfPxHP27vnYMYHkxMj6h80onk871s1fHB
xuG6KYWlesRjk2OxWxZCD4e28KyESVz0gwJBAJXP2LLR2vUQHGjxSolVCz57LjVw
FZgM10VKqF4qq/JFhweKRqYqsklUX74Tv0lzCSs6EKs7mRUQf2kLtGkuQv0CQQCj
AgozBwwfNejsL7oYSThdAwwbHZi/s7rHV7uE04E/en6dqdLn2qDYrH83LDhJZltS
1EDEAmK3ZPyo6TWnKVG1AkBz1AH/UgxEPPDjq4Fger0yjkogRo3d1DdwbFz0ek+C
fZXfTDSkYf+D46QwAU0++i8Jh+3YXTSPfTwfhXQyhO1K
-----END RSA PRIVATE KEY-----

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,我使用RabbitMQ 3.3.4和Erlang R14B04和CA SHA256证书。为了让服务器运行,我不得不升级到Erlang 18.3和RabbitMQ 3.6.2。我有客户消费者试图使用不支持SHA-256证书的SSLv3。

我的配置如下:

[
  {ssl, [{versions, ['tlsv1.2', 'tlsv1.1', 'tlsv1']}]},
  {rabbit, [
     {ssl_listeners, [5671]},
     {ssl_options, [{cacertfile,"/home/rabbitmq/cert/cacert.cer"},
                    {certfile,"/home/rabbitmq/cert/server.cer"},
                    {keyfile,"/home/rabbitmq/cert/server_private.pem"},
                    {versions, ['tlsv1.2', 'tlsv1.1', tlsv1]},
                    {ciphers, ["ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384",
 "ECDHE-ECDSA-AES256-SHA384","ECDHE-RSA-AES256-SHA384",
 "ECDH-ECDSA-AES256-GCM-SHA384","ECDH-RSA-AES256-GCM-SHA384",
 "ECDH-ECDSA-AES256-SHA384","ECDH-RSA-AES256-SHA384",
 "DHE-RSA-AES256-GCM-SHA384","DHE-DSS-AES256-GCM-SHA384",
 "DHE-RSA-AES256-SHA256","DHE-DSS-AES256-SHA256","AES256-GCM-SHA384",
 "AES256-SHA256","ECDHE-ECDSA-AES128-GCM-SHA256",
 "ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES128-SHA256",
 "ECDHE-RSA-AES128-SHA256","ECDH-ECDSA-AES128-GCM-SHA256",
 "ECDH-RSA-AES128-GCM-SHA256","ECDH-ECDSA-AES128-SHA256",
 "ECDH-RSA-AES128-SHA256","DHE-RSA-AES128-GCM-SHA256",
 "DHE-DSS-AES128-GCM-SHA256","DHE-RSA-AES128-SHA256","DHE-DSS-AES128-SHA256",
 "AES128-GCM-SHA256","AES128-SHA256","ECDHE-ECDSA-AES256-SHA",
 "ECDHE-RSA-AES256-SHA","DHE-RSA-AES256-SHA","DHE-DSS-AES256-SHA",
 "ECDH-ECDSA-AES256-SHA","ECDH-RSA-AES256-SHA","AES256-SHA",
 "ECDHE-ECDSA-DES-CBC3-SHA","ECDHE-RSA-DES-CBC3-SHA","EDH-RSA-DES-CBC3-SHA",
 "EDH-DSS-DES-CBC3-SHA","ECDH-ECDSA-DES-CBC3-SHA","ECDH-RSA-DES-CBC3-SHA",
 "DES-CBC3-SHA","ECDHE-ECDSA-AES128-SHA","ECDHE-RSA-AES128-SHA",
 "DHE-RSA-AES128-SHA","DHE-DSS-AES128-SHA","ECDH-ECDSA-AES128-SHA",
 "ECDH-RSA-AES128-SHA","AES128-SHA","EDH-RSA-DES-CBC-SHA","DES-CBC-SHA"]},
                                  {honor_cipher_order, true},
                    {fail_if_no_peer_cert, false}]}
   ]}
].

要获得Erlang支持的密码套件,您可以运行:

rabbitmqctl eval 'ssl:cipher_suites(openssl).'

对于有类似问题的其他人的旁注,您还可以检查公钥和私钥,以确保通过执行以下操作来使用正确的密钥:

# openssl x509 -in ssl.crt -pubkey -noout > from_crt.pub 
# openssl rsa -in ssl.key -pubout > from_key.pub 
# diff from_crt.pub from_key.pub

**如果你使用正确的密钥,你的差异应该是空的。

查看https://www.rabbitmq.com/ssl.html Rabbit有关SSL的信息。