Bug#426013: exim4-daemon-heavy Base64 decoding error

Simon Josefsson simon at josefsson.org
Thu Feb 28 13:58:36 UTC 2008


Hi!  Looking over the entire bug report, I'm confused by the path names.
Early in your bug report the files were:

MAIN_TLS_PRIVATEKEY = /etc/exim4/certificates/newserver_co_uk.pem
MAIN_TLS_CERTIFICATE = /etc/exim4/certificates/newserver_co_uk.crt

This means the /etc/exim4/certificates/newserver_co_uk.crt file should
contain something like:

-----BEGIN CERTIFICATE-----
MIICHjCCAYmgAwIBAgIERiYdNzALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251
VExTIHRlc3QgQ0EwHhcNMDcwNDE4MTMyOTI3WhcNMDgwNDE3MTMyOTI3WjAdMRsw
GQYDVQQDExJHbnVUTFMgdGVzdCBjbGllbnQwgZwwCwYJKoZIhvcNAQEBA4GMADCB
iAKBgLtmQ/Xyxde2jMzF3/WIO7HJS2oOoa0gUEAIgKFPXKPQ+GzP5jz37AR2ExeL
ZIkiW8DdU3w77XwEu4C5KL6Om8aOoKUSy/VXHqLnu7czSZ/ju0quak1o/8kR4jKN
zj2AC41179gAgY8oBAOgIo1hBAf6tjd9IQdJ0glhaZiQo1ipAgMBAAGjdjB0MAwG
A1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDwYDVR0PAQH/BAUDAweg
ADAdBgNVHQ4EFgQUTLkKm/odNON+3svSBxX+odrLaJEwHwYDVR0jBBgwFoAU6Twc
+62SbuYGpFYsouHAUyfI8pUwCwYJKoZIhvcNAQEFA4GBALujmBJVZnvaTXr9cFRJ
jpfc/3X7sLUsMvumcDE01ls/cG5mIatmiyEU9qI3jbgUf82z23ON/acwJf875D3/
U7jyOsBJ44SEQITbin2yUeJMIm1tievvdNXBDfW95AM507ShzP12sfiJkJfjjdhy
dc8Siq5JojruiMizAf0pA7in
-----END CERTIFICATE-----

and the /etc/exim4/certificates/newserver_co_uk.pem file should contain
something like:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC7ZkP18sXXtozMxd/1iDuxyUtqDqGtIFBACIChT1yj0Phsz+Y8
9+wEdhMXi2SJIlvA3VN8O+18BLuAuSi+jpvGjqClEsv1Vx6i57u3M0mf47tKrmpN
aP/JEeIyjc49gAuNde/YAIGPKAQDoCKNYQQH+rY3fSEHSdIJYWmYkKNYqQIDAQAB
AoGADpmARG5CQxS+AesNkGmpauepiCz1JBF/JwnyiX6vEzUh0Ypd39SZztwrDxvF
PJjQaKVljml1zkJpIDVsqvHdyVdse8M+Qn6hw4x2p5rogdvhhIL1mdWo7jWeVJTF
RKB7zLdMPs3ySdtcIQaF9nUAQ2KJEvldkO3m/bRJFEp54k0CQQDYy+RlTmwRD6hy
7UtMjR0H3CSZJeQ8svMCxHLmOluG9H1UKk55ZBYfRTsXniqUkJBZ5wuV1L+pR9EK
ca89a+1VAkEA3UmBelwEv2u9cAU1QjKjmwju1JgXbrjEohK+3B5y0ESEXPAwNQT9
TrDM1m9AyxYTWLxX93dI5QwNFJtmbtjeBQJARSCWXhsoaDRG8QZrCSjBxfzTCqZD
ZXtl807ymCipgJm60LiAt0JLr4LiucAsMZz6+j+quQbSakbFCACB8SLV1QJBAKZQ
YKf+EPNtnmta/rRKKvySsi3GQZZN+Dt3q0r094XgeTsAqrqujVNfPhTMeP4qEVBX
/iVX2cmMTSh3w3z8MaECQEp0XJWDVKOwcTW6Ajp9SowtmiZ3YDYo1LF9igb4iaLv
sWZGfbnU3ryjvkb6YuFjgtzbZDZHWQCo8/cOtOBmPdk=
-----END RSA PRIVATE KEY-----

Can you confirm that the files, respectively, have the proper headers?

If the files contain anything else but content like the above, that may
be the problem.

I don't understand what the .key file is.  Can you confirm that
'certtool -k /etc/exim4/certificates/newserver_co_uk.pem' works?

It is important to run the tests on the exact same files as the ones
used by exim.

Do you still get the exact same exim error message?  Note that if the
*.crt and *.pem filenames are mixed up, that would explain everything.

2007-05-13 22:02:17 TLS error on connection from myhost.net [217.147.xx.xx]
    (cert/key set up: cert=/etc/exim4/certificates/newserver_co_uk.crt
     key=/etc/exim4/certificates/newserver_co_uk.pem) : Base64 decoding error.

/Simon

Mark Adams <mark at campbell-lange.net> writes:

> Hi Simon,
>
> Apologies for the very late reply.
>
> certool works fine on the .crt file, but not on the .key - I get the
> Base64 decoding error.
>
> certtool: Import error: Base64 decoding error.
>
> The file appears to be in the correct format.
>
> Regards,
> Mark
>
>
> On Fri, Jan 04, 2008 at 12:22:51PM +0100, Simon Josefsson wrote:
>> Hi Mark!  I'm trying to help debug this problem.  Could you please post
>> the output from running:
>> 
>> certtool -i < /etc/exim4/certificates/newserver_co_uk.crt
>> 
>> Could you also check that
>> 
>> certtool -k < /etc/exim4/certificates/newserver_co_uk.pem
>> 
>> works?  Don't post the output, as that would compromise your private
>> key.
>> 
>> Do the files contain anything except one certificate and one private key
>> respectively?
>> 
>> The next step would be to install libgnutls-dbg and set a breakpoint on
>> gnutls_certificate_set_x509_key_file to see where it fails.
>> 
>> I'm trying to confirm that the problem only happens inside exim, and not
>> inside gnutls.  That seems strange, but the discussions in the bug
>> report earlier suggests this.
>> 
>> Fwiw, I believe this problem has nothing to do with a wildcard cert, the
>> code that fails reads:
>> 
>>   DEBUG(D_tls) debug_printf("certificate file = %s\nkey file = %s\n",
>>     cert_expanded, key_expanded);
>>   rc = gnutls_certificate_set_x509_key_file(x509_cred, CS cert_expanded,
>>     CS key_expanded, GNUTLS_X509_FMT_PEM);
>>   if (rc < 0)
>>     {
>>     uschar *msg = string_sprintf("cert/key setup: cert=%s key=%s",
>>       cert_expanded, key_expanded);
>>     return tls_error(msg, host, rc);
>>     }
>> 
>> That function does not care whether the certificate is a wildcard one.
>> 
>> /Simon





More information about the Pkg-exim4-maintainers mailing list