Explaining two way ssl and all that jazz is exhausting. I will try to find a useful link. However, for your information when an applicaiton deployed in glassfish acts as a client to communicating with a server over SSL ( for instance LDAP server realm configured through an SSL port), it will use glassfish server's identity certificate (from its keystore) as its client certificate.

But if you are explicitly coding for SSL handshake, client application is responsible for selecting the keystore, and presenting the certificate as part of the handshake.

Since it is working in a previous version of Glassfish, the same code should work for you. It is very likely that your problem is related to configuration. I am a bit confused about what you had added to server's keystore.jks generally the other server's certificate is added to the trust store cacerts.jks

A useful glassfish ssl example

An SSL Socket client example

Example of choosing keystore in client.

How does my app know what private key to use
We are having issues installing storm on cent os 7

File "./storm", line 514, in &lt;module&gt;
  main()
File "./storm", line 511, in main
  (COMMANDS.get(COMMAND, unknown_command))(*ARGS)
File "./storm", line 308, in nimbus
  jvmopts = parse_args(confvalue("nimbus.childopts", cppaths)) + [
File "./storm", line 113, in confvalue
  p = sub.Popen(command, stdout=sub.PIPE)
File "/root/Installers/Python-2.7.8/Lib/subprocess.py", line 710, in __init__
  errread, errwrite)
File "/root/Installers/Python-2.7.8/Lib/subprocess.py", line 1327, in _execute_child
  raise child_exception
OSError: [Errno 2] No such file or directory

