Error Lync – 0x800B0110 The certificate is not valid for the requested usage

Este ha sido uno de los errores mas ráros que he visto desde que estoy trabajando en IT… Y mira que he visto cosas raras.

Estás el lunes por la mañana de lo más tranquilo en tu mesa cuando de repente empieza a decirte la gente que la federación del Lync no va, que no pueden hablar con gente de otras empresas. Abres tu cliente de Lync y efectivamente, todos los contactos externos aparecen con “Presencia Desconocida”.

Entras en el servidor de Edge y revisas el log…

error certificate usage

What? O_o

Vas al certificado en cuestión y efectivamente, el propósito Server Authentication (Proves your identity to a remote computer) ha desaparecido del certificado.

cert bad

Revisas otro servidor que tiene instalado el mismo certificado y el propósito si está

cert good

¿Eh? ¿Qué pasa aquí?

Se habrá corrompido el certificado de alguna forma. Lo eliminas y lo vuelves a importar. Nada, sigue fallando.

Sigues revisando el resto de los logs. No hay errores.

Te paras un momento a pensar. ¿Y si el problema está en la entidad certificadora? ¿Quién firmó este certificado?

Resulta que este certificado esta firmado por Symantec Class 3 Secure Server CA – G4, que a su vez está firmada por VeriSign Class 3 Public Primary Certification Authority – G5, que a su vez está firmada por VeriSign Class 3 Public Primary CA. (¿A que PKI mola?)

Empiezas a revisar cada uno de los certificados de la cadena y te fijas de que ninguno tiene el proposito de Server Authentication. Aquí pasó algo raro, muy raro.

cert chain bad

Revisas como está esto en el otro servidor.

cert chain good

El certificado está firmado por Symantec Class 3 Secure Server CA – G4, que a su vez está firmada por VeriSign. ¡AJÁ!

La CA Symantec Class 3 Secure Server CA – G4 está cross-signed (firmado cruzado) por varias CA, dentro de ellas VeriSign y VeriSign Class 3 Public Primary Certification Authority – G5. La CA VeriSign está habilitada para unos propósitos y la CA VeriSign Class 3 Public Primary CA (que es la que firma VeriSign Class 3 Public Primary Certification Authority – G5) está habilitada para otros y NO incluye Server Authentication. (¿A que PKI mola MUCHO?)

code signing

Pero… ¿Y cómo es que antes si funcionaba?

Existe algo llamado Automatic Root Certificates Update, es un componente de Windows que actualiza automáticamente el listado de certificados raíz de un equipo y sus propósitos. En los logs de Windows queda registrado bajo el source CAPI2

capi update

Como se puede ver en la imagen, durante la madrugada se actualizó el certificado de VeriSign Class 3 Public Primary CA y supongo que ahí fue cuando se le eliminó el propósito de Server Authentication.

Pero… ¿Y por qué en el otro servidor no falló?

Como puse arriba, la CA VeriSign Class 3 Public Primary Certification Authority – G5 tiene un firmado cruzado. En el servidor que seguía funcionando correctamente SI estaba instalado el certifcado de VeriSign por lo que el certificado de Lync Edge Services tenía un camino que validara su propósito de Server Autentication. En el servidor donde falló, el certificado de VeriSign no estaba instalado, por lo que el certificado final parecía inválido. El tema se resolvió instalando los certificados nuevos de Symantec en el servidor de Edge.

No quiero saber nada de PKI por un tiempo… 🙂