SSL Cert Compatibility issue with LDAPS for Outlook Clients
-----------------------------------------------------------
Key: DIRSERVER-1164
URL: https://issues.apache.org/jira/browse/DIRSERVER-1164
Project: Directory ApacheDS
Issue Type: Improvement
Components: ldap
Affects Versions: 1.5.2
Reporter: Steve
Any Outlook Version will simply refuse the service to LDAPS on a default
apacheds installation.
The SSL certificate has to match the hostname exactly - if it is empty or you
do not connect using
the DNS name - outlook will simply refuse the connection even if the cert
itself is trusted.
The Standard Apache 1.5.2 distribution should work out of the box with Outlook
Clients for using LDAPS -
the only catch is the SSL certificate which is automatically generated by
apacheDS - it is neither
trusted by outlook - nor does it contain a valid common name (the DNS name of
the server) it seems.
The first issue can of course not be resolved by the auto key generation when
you startup the server - but maybe the DNS address of the certificate.
Even then - there needs to be a way to easily extract the generated public key
so that you can manually trust it on windows clients.
This issue only applies to Outlook Clients - Thunderbird/LDAPBrowser and Co
will ask the user if they want to connect to untrusted sites.
Alternatively - there should be an option for admins to simply change the SSL
key to a valid/trusted one - in 1.52 the only way i found so far
for modifying the SSL key is programatically this way :
EntryOperationContext adminEntry = new EntryOperationContext(
directoryService.getRegistries(),
PartitionNexus.getAdminName());
if (directoryService.getPartitionNexus().hasEntry(adminEntry)) {
KeyStore store = // load some store from p12 for example
KeyPair keyPair = // load some keypair from store
Attributes entry = new BasicAttributes();
PrivateKey privateKey = keyPair.getPrivate();
entry.put(TlsKeyGenerator.KEY_ALGORITHM_AT, privateKey
.getAlgorithm());
entry.put(TlsKeyGenerator.PRIVATE_KEY_AT,
privateKey.getEncoded());
entry.put(TlsKeyGenerator.PRIVATE_KEY_FORMAT_AT,
privateKey
.getFormat());
PublicKey publicKey = keyPair.getPublic();
entry.put(TlsKeyGenerator.PUBLIC_KEY_AT,
publicKey.getEncoded());
entry.put(TlsKeyGenerator.PUBLIC_KEY_FORMAT_AT,
publicKey
.getFormat());
Certificate cert = store.getCertificate(alias);
entry.put(TlsKeyGenerator.USER_CERTIFICATE_AT,
cert.getEncoded());
List<Modification> items =
ModifyOperationContext.createModItems(
ServerEntryUtils.toServerEntry(entry,
PartitionNexus
.getAdminName(),
directoryService.getRegistries()),
ModificationOperation.REPLACE_ATTRIBUTE);
directoryService.getPartitionNexus().modify(
new ModifyOperationContext(
directoryService.getRegistries(), PartitionNexus
.getAdminName(), items));
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.