tomcat - Client certificate is not sent to server -
i trying set two-way ssl authentication soap web-service running on jboss 4.2.3. have created ca purpose root ca , 2 intermediate ca-s (development , production environments).
however trying test setup client certificate signed 1 of intermediate ca-s, have run problems.
the server set root ca in jvm-s cacerts
keystore , relevant intermediate ca in keystore used tomcat connector truststore. complete connector config following:
<connector port="443" address="${jboss.bind.address}" protocol="http/1.1" sslenabled="true" maxthreads="150" scheme="https" secure="true" clientauth="true" sslprotocol="tls" keystorefile="keystore.p12" keystorepass="******" keystoretype="pkcs12" emptysessionparth="true" enablelookups="false" acceptcount="100" truststorefile="truststore.jks" truststorepass="******" truststoretype="jks" disableuploadtimeout="true" />
connecting openssl s_client
can see, "acceptable client certificate ca names" lists our intermediate ca. providing correct client certificate , key in -cert
, -key
options. far can understand openssl output, certificate never sent. tried concatenating client certificate, intermediate , root ca single pem file, present entire chain, didn't either.
the s_client command line following:
openssl s_client -host localhost -port 443 -cert client_cert.crt -key client_key.key -capath /etc/ssl/certs/ -debug -state
the same behaviour observerd when try test service google chrome , relevant certificates installed in windows. wireshark output looks same - certificate requested, correct acceptable ca presented, browser never gives me choice of certificate , empty client certificate message sent server.
so question - missing here? have assumed acceptable ca list should used client decide certificates send, making decision go otherwise , no certificate sent. again assuming, server configured correctly, because expected ca sent in negotiation, missing on client side?
edit:
as requested @bruno, looked @ key usage of certificates. used client certificate gives followin information when printed openssl x509 -noout -text -in client.cer
x509v3 basic constraints: critical ca:false x509v3 key usage: critical ..... x509v3 extended key usage: tls web client authentication
looking @ - empty key usage field seems culprit. values should there? can't seem figure out phrase google such information. i'll have @ ca management software then.
thanks hint given @bruno, investigated key usage part of client certificates. turns out, generating certificates empty key usage attribute.
i have configured our ca management software generate certificates followin key usage/extended key usage attributes. confess don't understand, each of these does, made system work now. have not added potentially dangerous here.
x509v3 key usage: critical digital signature, non repudiation, key encipherment, data encipherment, key agreement x509v3 extended key usage: tls web client authentication
after googling around information key usage bits, stumbled upon this question explained things somewhat.
Comments
Post a Comment