Mais simples, então eu pensei. Sem essa linha no lado do cliente:
<parameter name="rabbitmq.connection.ssl.enabled">true</parameter>
o cabeçalho da conexão que é iniciada é texto simples. Assim, erro.
Eu tenho um RabbitMQ 3.3.5, Erlang R16B03-1 rodando em rhel7 com firewall e selinux desativados.
A parte ssl da configuração é a seguinte:
{ssl_listeners, [15672]},
{ssl_options, [
{certfile,"/etc/rabbitmq/ssl/server.cer"},
{keyfile,"/etc/rabbitmq/ssl/key.pem"},
{verify,verify_none},
{fail_if_no_peer_cert,false}
]},
O arquivo de log da tentativa de conexão:
=INFO REPORT==== 7-Jan-2016::21:34:33 ===
accepting AMQP connection <0.354.0> (10.52.142.229:62631 -> 10.52.134.201:15672)
=INFO REPORT==== 7-Jan-2016::21:34:33 ===
accepting AMQP connection <0.358.0> (10.52.142.229:62632 -> 10.52.134.201:15672)
=ERROR REPORT==== 7-Jan-2016::21:34:37 ===
error on AMQP connection <0.314.0>:
{ssl_upgrade_error,{tls_alert,"record overflow"}}
=ERROR REPORT==== 7-Jan-2016::21:34:37 ===
error on AMQP connection <0.318.0>:
{ssl_upgrade_error,{tls_alert,"record overflow"}}
Para deixar claro, primeiro cria cerca de 10 conexões e, em seguida, fornece o mesmo número de alertas de tls na linha.
O lado do cliente é executado no RHEL6. É um servidor WSO2 ESB que é baseado no eixo apache. A configuração é a seguinte:
<transportSender name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQSender">
<parameter name="AMQPConnectionFactory" locked="false">
<parameter name="rabbitmq.server.host.name" locked="false">JTIRABMQ01</parameter>
<parameter name="rabbitmq.server.port" locked="false">15672</parameter>
<parameter name="rabbitmq.server.user.name" locked="false">consumer</parameter>
<parameter name="rabbitmq.server.password" locked="false">guest</parameter>
<parameter name="rabbitmq.server.virtual.host" locked="false">myvhost</parameter>
<parameter name="rabbitmq.connection.retry.interval" locked="false">10000</parameter>
<parameter name="rabbitmq.connection.retry.count" locked="false">5</parameter>
</parameter>
</transportSender>
Qual poderia ser o motivo? Eu encontrei informações sobre erros semelhantes aqui :
Alternatively, this error message can show up without a valid cert
ERROR REPORT=== 23-Sep-2013::18:34:14 = error on AMQP connection <0.568.0>: {ssl_upgrade_error,"record overflow"} (unknown POSIX error)
(This is when sender and server are on separate machines and sender does not provide certs)
E ... eu não quero nenhuma autenticação baseada em certificado. Não deve ser um erro, pois é permitido nas opções.
Alguma sugestão de como eu poderia trabalhar em torno disso?
Mais simples, então eu pensei. Sem essa linha no lado do cliente:
<parameter name="rabbitmq.connection.ssl.enabled">true</parameter>
o cabeçalho da conexão que é iniciada é texto simples. Assim, erro.