On 17/01/2019 15:14, Shawn McKinney wrote:
On Jan 16, 2019, at 3:54 PM, Emmanuel Lécharny <elecha...@gmail.com> wrote:

The Server, when started, will try to load the Keystore content:

o If there is no provided KeyStore file, the server will use create its own 
Keystore, based on the default SUN provider.
o Otherwise, the server will try to load the provided KeyStore, using the 
paswword that has to be provided too. There are two parameters used to 
configure the server : ads-keystoreFile that will contain tha path to the 
KeyStore and ads-certificatePassword (which should most certainly be renamed 
ads_keyStorePassword)
Hi Emmanuel,

Thinking out loud here so forgive the naive comment, but shouldn’t the server 
use the a. default Java keystore (if found), or b. what’s passed to it, and 
only if not (a or b) c. create a new?


The server is currently trying to load a keystore that is passed to it as a parameter, and if not, it creates an internal keystore that fetches the admin user Certificate. There is no such thing as a 'default java keystore', unless you mean the one you manage using keytool - but then you have to tell the app where this keystore is -. Correct me if I'm wrong.

The rational, when this part of the server was implemented, was to make dead simple to have TLS working: wze create the certificate 'on the fly', and store it in a keystore that is wrapped around the server itself, for the storage. Somehow, it makes sense. There is even an extended operation that allows a client to create a certificate (CertGenerationRequest).

So passing an existing Keystore is a way to use signed certificates, instead of self-signed ones generated by teh server at startup. Funny enough, you can also reconfigure the server to use a signed certificate without using a keytstore, but it's a 2 steps init :

- first start the server as is

- change the admin certificate/public/private key to replace them with the signed one

- restart the server


In any case, I do think we have to have a serious conversation about all those aspects which are critically important from a security PoV !!!


FTR, I'm checking the code provided by Daniel Fisher (DIRAPI-72) which point to the code that can be used to verify the server name on the startTLS extended operation. It's based on the sun.security.util.HostnameChecker class.


Reply via email to