Re: Intermediate SSL certificates in UW-imapd

David B Funk <[email protected]> Thu, 26 Sep 2013 19:20:12 -0500 (CDT)
Newsgroups gmane.mail.imap.uw.c-client
Message-ID <[email protected]>
On Thu, 26 Sep 2013, Andrew Daviel wrote:

>
> We have had UW imapd-2007e running fine for some time.
> Recently our SSL certificate provider announced that we had to upgrade our 
> 1024-bit certificate to 2048 before it was revoked.
>
> The replacement they provided is not signed by a CA in the Mozilla store (and 
> hence OpenSSL which copies it) - it uses an intermediate certificate.
>
> I got Apache to work by following instructions and defining 
> SSLCertificateChainFile
> OpenLdap seems happy with the intermediate certificate added to the bundle 
> defined as TLSCACertificateFile.
>
> But imapd does not. It uses a PEM file with both the key and certificate, and 
> the OpenSSL library. OpenSSL (at least, the "openssl" shell command), uses 
> the bundle in  /etc/pki/tls/cert.pem. But Alpine, at least, is unhappy if I 
> just add the intermediate certificate to that.
>
>
> Is there a solution ? Or should we just order a "proper" directly-signed 
> certificate ?
>
> uw-imap-2007e
> openssl-0.9.8e-20
> CentOS 5.7
> Linux 2.6.18 x86_64

A properly constructed cert including the intermediate chain in the
cert file should work with uw-imap-2007e. I've been using it that
way for over 3 years now. (with two different CAs, Thawte & Comodo).

As more of the root CAs are moving to intermediate chaining certs,
it's going to be increasingly difficult to get "proper" direct-signed
certs, so you might as well figure out how to make it work now.

The trick is to place all the necessary components in your imap/pop
cert file in the correct order.

It will look like:

-----BEGIN CERTIFICATE-----
01234...Data for client cert...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
01234... Data for client private key ...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
1234... Data for intermediate CA cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
1234... Data for Root CA cert
-----END CERTIFICATE-----

Where "01234...Data for ..." represents the base-64 PEM
encoded data block for that particular cert component.
(usually a couple dozen lines.)

Dave