6.0.8_GA_2661.RHEL5_64_20100820052503 CentOS5_64 FOSS edition
Zimbra Desktop 1.0(build 1593)
Background:
Yesterday I updated my Verisign SSL cert to a VeriSign Class 3 Secure Server CA - G3. First I grabbed my old CSR from /opt/zimbra/ssl/zimbra/commercial/commercial.csr and sent it to VeriSign. VeriSign sent me back my new cert which I just called commercial.crt. I then went back to VeriSign and got their new root.ca, primary_intermediate.ca, and seconday_intermediate.ca. Next I concatenated the three ca files together into commercial_ca.crt. I edited commercial_ca.crt and made sure there were no gaps and each cert had a -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- on separate lines. Then I ran, as root,
Code:
zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key commercial.crt commercial_ca.crt
and everything came back as valid. Passing that test I decided to deploy with
Code:
zmcertmgr deploycrt comm commercial.crt commercial_ca.crt
which seemed to install without error so I
Code:
su - zimbra
zmcontrol stop
zmcontrol start
The Zimbra service came back up fine. I checked the new SSL cert out in a few different browsers and all behaved as should be expected.
Problem:
ZD pukes with "Invalid or Untrusted SSL Certificate". Now I know I can just except the "untrusted" cert and carry on but I would prefer this to work properly. Below is the attached log.
Code:
2010-11-19 09:18:33,937 ERROR [sync-timer-dir] [] offline - sync failure: example@example.com
com.zimbra.common.service.RemoteServiceException: d2:CN19:mail.example.com1:O20:Example Laboratories2:OU42:Terms of use at www.verisign.com/rpa (c)056:accept4:true5:alias51:mail.example.com:C4D68D7A4D237818BC7A89275BB3EB84:fromi1289865600000e4:host19:mail.examle.com3:icn38:VeriSign Class 3 Secure Server CA - G32:io9:"VeriSign3:iou50:Terms of use at https://www.verisign.com/rpa (c)103:md532:CE4BA9F5B0E7D8CD4FCEABCB1C23EF598:mismatch5:false1:s31:C4D68D7A4D237818BC7A89275BB3EB84:sha140:220414C6AC6CAC3C4DF9FBF6BF8CE077D27304192:toi1353369599000ee
ExceptionId:sync-timer-dir:1290183513937:c83e5e50d2c41cbf
Code:remote.SSLCERT_ERROR
at com.zimbra.common.service.RemoteServiceException.SSLCERT_ERROR(RemoteServiceException.java:74)
at com.zimbra.common.service.RemoteServiceException.doSSLFailures(RemoteServiceException.java:154)
at com.zimbra.cs.zclient.ZMailbox.invoke(ZMailbox.java:520)
at com.zimbra.cs.zclient.ZMailbox.invoke(ZMailbox.java:508)
at com.zimbra.cs.zclient.ZMailbox.getAccountInfo(ZMailbox.java:895)
at com.zimbra.cs.account.offline.DirectorySync.syncAccount(DirectorySync.java:210)
at com.zimbra.cs.account.offline.DirectorySync.sync(DirectorySync.java:175)
at com.zimbra.cs.account.offline.DirectorySync.syncAllAccounts(DirectorySync.java:137)
at com.zimbra.cs.account.offline.DirectorySync.access$000(DirectorySync.java:55)
at com.zimbra.cs.account.offline.DirectorySync$1.run(DirectorySync.java:70)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Caused by: java.security.cert.CertificateException: d2:CN19:mail.example.com1:O20:Example Laboratories2:OU42:Terms of use at www.verisign.com/rpa (c)056:accept4:true5:alias51:mail.example.com:C4D68D7A4D237818BC7A89275BB3EB84:fromi1289865600000e4:host19:mail.example.com3:icn38:VeriSign Class 3 Secure Server CA - G32:io9:"VeriSign3:iou50:Terms of use at https://www.verisign.com/rpa (c)103:md532:CE4BA9F5B0E7D8CD4FCEABCB1C23EF598:mismatch5:false1:s31:C4D68D7A4D237818BC7A89275BB3EB84:sha140:220414C6AC6CAC3C4DF9FBF6BF8CE077D27304192:toi1353369599000ee
at com.zimbra.common.util.CustomTrustManager.checkServerTrusted(CustomTrustManager.java:91)
at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.zimbra.common.util.CustomSSLSocket.startHandshake(CustomSSLSocket.java:197)
at com.zimbra.common.util.CustomSSLSocket.getInputStream(CustomSSLSocket.java:331)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:744)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at com.zimbra.common.soap.SoapHttpTransport.invoke(SoapHttpTransport.java:276)
at com.zimbra.common.soap.SoapHttpTransport.invoke(SoapHttpTransport.java:230)
at com.zimbra.common.soap.SoapTransport.invoke(SoapTransport.java:318)
at com.zimbra.cs.zclient.ZMailbox.invoke(ZMailbox.java:514)
... 9 more
The error message is vague to me. Did I create my cert chain file wrong? Did I miss a step somewhere? Do I need to restart the whole server and not just the Zimbra service? Should I have generated a brand new CSR for my cert request? Do I need a newer version of ZD? Why are the web browsers fine with the new cert but ZD is having a heart attack? Any help or insight will be much appreciated.