It seems the error is coming from Proton side and is related to my certificate
configuration. However, I would expect to have some proton logs in my log file
but this is not the case. Did I miss something in the configuration?
Qpid-dispatch 0.6.0 (src/server.c)
if (config->ssl_certificate_file) {
if (pn_ssl_domain_set_credentials(domain,
config->ssl_certificate_file,
config->ssl_private_key_file,
config->ssl_password)) {
qd_log(ct->server->log_source, QD_LOG_ERROR,
"SSL local configuration failed for %s:%s",
ct->config->host, ct->config->port);
}
}
Proton 0.12.2 (proton-c/src/ssl/openssl.c)
Before returning, for every error, there is a log line ("ssl_log_error") but I
cannot find any of them in the dispatch.10396.log file
int pn_ssl_domain_set_credentials( pn_ssl_domain_t *domain,
const char *certificate_file,
const char *private_key_file,
const char *password)
{
if (!domain || !domain->ctx) return -1;
if (SSL_CTX_use_certificate_chain_file(domain->ctx, certificate_file) != 1) {
ssl_log_error("SSL_CTX_use_certificate_chain_file( %s ) failed",
certificate_file);
return -3;
}
if (password) {
domain->keyfile_pw = pn_strdup(password); // @todo: obfuscate me!!!
SSL_CTX_set_default_passwd_cb(domain->ctx, keyfile_pw_cb);
SSL_CTX_set_default_passwd_cb_userdata(domain->ctx, domain->keyfile_pw);
}
if (SSL_CTX_use_PrivateKey_file(domain->ctx, private_key_file,
SSL_FILETYPE_PEM) != 1) {
ssl_log_error("SSL_CTX_use_PrivateKey_file( %s ) failed", private_key_file);
return -4;
}
...
Regards,
Adel
> From: [email protected]
> To: [email protected]
> Subject: RE: [qpid-dispatch 0.6.0] Client certificate authentication with
> Java Broker 6.0.0
> Date: Wed, 13 Jul 2016 12:38:57 +0200
>
> Actually, I have an error message in the log file of the dispatcher which
> comes up every 5 seconds (If I am not mistaken, every x seconds the
> dispatcher will re-try to connect to the broker?)
>
> bash$ tail -f dispatch.10396.log
> Wed Jul 13 12:35:51 2016 SERVER (error) SSL local configuration failed for
> localhost:10101
> Wed Jul 13 12:35:56 2016 SERVER (error) SSL local configuration failed for
> localhost:10101
> Wed Jul 13 12:36:01 2016 SERVER (error) SSL local configuration failed for
> localhost:10101
> Wed Jul 13 12:36:06 2016 SERVER (error) SSL local configuration failed for
> localhost:10101
>
> Regards,
> Adel
>
> > From: [email protected]
> > To: [email protected]
> > Subject: [qpid-dispatch 0.6.0] Client certificate authentication with Java
> > Broker 6.0.0
> > Date: Wed, 13 Jul 2016 11:44:05 +0200
> >
> > Hello,
> >
> > On a previous
> > post(http://qpid.2158936.n2.nabble.com/Qpid-Dispatch-SSL-SASL-configuration-on-a-listener-tp7646048.html),
> > I had asked about how to setup the qpid-dispatch to work with SSL and SASL
> > authentication and I was able thanks to your help to get clients
> > (Consumer/producer) to connect to the dispatcher using the correct
> > certificates.
> >
> > At that time, I was connected to the open AMQP port of the Java Broker
> > which had no security. I then, tried to connect to a port which only
> > required SSL and this is also working.
> >
> > What is not working however is connecting the dispatcher to a port which
> > has SSL and requires client certificates on the Java Broker. When I run the
> > qdmanage command to create the connector, no connections shows up on the
> > virtual host tab in the Java Broker Web management console.
> >
> > The qdmanage commands are not showing any errors and there are no errors on
> > the Java Broker's side. Is there a way to debug further what is happening
> > with qdmanage?
> >
> > As a reminder, my certificates are generated by a self-signed CA composed
> > of a root authority and an intermediate one.
> >
> > Dispatcher config
> > router {
> > id: router.10396
> > mode: interior
> > worker-threads: 4
> > }
> >
> > ssl-profile {
> > name: ssl-full-profile
> > certFile: cert_lx.pem
> > keyFile: key_lx.pem
> > certDb: ca-chain.cert.pem
> > }
> >
> > listener {
> > host: 0.0.0.0
> > port: 10396
> > role: normal
> > saslMechanisms: EXTERNAL
> > sslProfile: ssl-full-profile
> > requireSsl: yes
> > authenticatePeer: yes
> > }
> >
> > listener {
> > host: 0.0.0.0
> > port: 10395
> > role: normal
> > saslMechanisms: ANONYMOUS
> > sslProfile: ssl-full-profile
> > requireSsl: yes
> > authenticatePeer: no
> > }
> >
> > log {
> > module: DEFAULT
> > enable: warn+
> > output: dispatch.10396.log
> > }
> >
> > Java Broker
> > AMP port is 10101 configured with the proper "KeyStore" of the broker, a
> > "NonJavaTrustStore" containing the ca-chain.cert.pem (Combination of the
> > root and intermediate certificates) and "Want SSL Client Certificate".
> >
> > qdmanage commands
> > qdmanage -b amqps://localhost:10395 --ssl-key=key_lx.pem
> > --ssl-certificate=cert_lx.pem create --type=address prefix=perfQueue
> > waypoint=true name=perf.queue.addr
> >
> > qdmanage -b amqps://localhost:10395 --ssl-key=key_lx.pem
> > --ssl-certificate=cert_lx.pem create --type=connector role=route-container
> > addr=localhost port=10101 name=localhost.broker.10101.connector
> > certFile=cert_lx.pem certDb=ca-chain.cert.pem
> >
> > Regards,
> > Adel
> >
>