<div dir="ltr"><p class="MsoNormal"><font face="Tahoma, sans-serif">Hi there,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> We are trying to configure client certificate based authentication over SSL on our rabbitmq server. However we have hit an issue which we are unable to get past.</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">Can someone please help us figure out the solution?</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">Our configuration steps are as follows:</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">   </span>1)    Our RabbitMQ version is: 3.2.3 ErLang R16B03-1</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">  </span>2) We would like to achieve password-less authentication using client certificate and LDAP authorisation.</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">       </span>3) For client certificates, we installed a stand-alone microsoft pki certification authority on our windows server 2008 R2 machine</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">      </span>4) We then issued a client certificate via the certificate manager web portal i.e.</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">      </span>(https://<servername>/certmgr -> Request a certificate -> Advanced certificate request -> Create and submit a request to this CA -> Filled in the details (with Client Authentication Certificate option selected)-> Submitted the request -> Approved -> Installed.</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">         </span>Please note the Name on the certificate was set as username@domain.com (which is the CN for the user name in AD)</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>5) We then issued an SSL certificate via the certificate manager web portal i.e. the same steps as above but this time had the “Server Authentication Certificate” selected</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">         </span>Please note the Name on the certificate was set as machine@domain.com</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">   </span>6) Downloaded the CA root certificate in .cer format and converted it into .pem using openssl</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">   </span>7) Downloaded the Server certificate (from step 5) in .pfx format. It was then separated into ServerCertificate.pem and ServerCertificateKey.pem using openssl</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">  </span>8) Downloaded the Client certificate (from step 4) in .pfx format. It was then separated into Cert.pem/ Key.pem and then combined into ClientCertificate.p12 using openssl</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">      </span>9) Our rabbitmq config is:</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>[{rabbit,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            [{auth_backends, [rabbit_auth_backend_ldap]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {auth_mechanisms, ['EXTERNAL']},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {ssl_listeners, [{"0.0.0.0", 5671}]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {ssl_options,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                        [{cacertfile,"C:/Program Files (x86)/RabbitMQ Server/rabbitmq_server-3.2.3/certificates/pem/CARootCertificate.pem"},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">        {certfile,"C:/Program Files (x86)/RabbitMQ Server/rabbitmq_server-3.2.3/certificates/pem/ServerCertificate.pem"},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">        {keyfile,"C:/Program Files (x86)/RabbitMQ Server/rabbitmq_server-3.2.3/certificates/key/ServerCertificateKey.key"},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">        {verify,verify_peer},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">        {fail_if_no_peer_cert,true}]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {ssl_cert_login_from, common_name}]</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">{rabbitmq_auth_backend_ldap,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            [</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {servers,               ["xxxxxxx.yyyyy.com"]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {dn_lookup_attribute,   "userPrincipalName"},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {dn_lookup_base,        "DC= yyyyy,DC=com"},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {use_ssl,               true},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {port,                  636},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">    {log,                   network},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">    {vhost_access_query,    {in_group,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                                                                                    "ou=${vhost}-users,ou=computers,dc= yyyyy,dc=com"}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {resource_access_query,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                        {for,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                                    [{permission, configure, {in_group, "cn=domain users,dc= yyyyy,dc=com"}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                                    {permission, write,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">              {for, [{resource, queue,    {in_group, "cn=domain users,dc= yyyyy,dc=com"}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                                                            {resource, exchange, {constant, true}}]}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">             {permission, read,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">              {for, [{resource, exchange, {in_group, "cn=domain users,dc= yyyyy,dc=com"}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                     {resource, queue,    {constant, true}}]}}</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            ]</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                        }},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            {tag_queries,           [{administrator, {constant, true}},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">                                                                                    {management,    {constant, true}}]}</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">   ]}].</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre"> </span>10) Our client code is:</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            cf.Ssl.ServerName = <CN Name of the server certificate i.e. machine@domain.com></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            cf.Ssl.CertPath = @"C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.2.3\certificates\p12\ClientCertificate.p12";</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            cf.Ssl.CertPassphrase = "rabbitmq";</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            cf.Ssl.Enabled = true;</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            cf.Ssl.AcceptablePolicyErrors = System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch |</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors|</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">            System.Net.Security.SslPolicyErrors.RemoteCertificateNotAvailable;</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>11) And following is our log:</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">=INFO REPORT==== 27-Mar-2014::14:35:23 ===</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">accepting AMQP connection <0.322.0> (a.b.c.d:2935 -> a.b.c.d:5671)</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> </font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">=INFO REPORT==== 27-Mar-2014::14:35:23 ===</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">LDAP CHECK: passwordless login for username@domain.com</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> </font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">=ERROR REPORT==== 27-Mar-2014::14:35:26 ===</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">closing AMQP connection <0.322.0> (a.b.c.d:2935 -> a.b.c.d:5671):</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">{handshake_error,starting,0,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">    {exit,as_user_no_password,'connection.start_ok',</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">        [{rabbit_auth_backend_ldap,creds,2,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_auth_backend_ldap,check_user_login,2,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_access_control,'-check_user_login/2-fun-0-',4,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {lists,foldl,3,[{file,"lists.erl"},{line,1248}]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_reader,auth_phase,2,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_reader,handle_method0,3,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_reader,handle_input,3,[]},</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">         {rabbit_reader,recvloop,2,[]}]}}</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> </font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">And the .net error is “Possibly caused by authentication failure”</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> </font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">Regards,</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif">Vinay</font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"><br></font></p><p class="MsoNormal"><font face="Tahoma, sans-serif"> </font></p></div>