Recientemente ( más información ) He detectado un mensaje extraño en los registros de mi reciente instalación reciente de OS X Mavericks 10.9.2
Apr 27 15:26:47 Ivans-MacBook-Pro.local apsd[194]: Unrecognized leaf certificate
Aparece cada 15 minutos más o menos. Lo he buscado en Google y hay muchos otros usuarios que pegaron sus registros (muchas veces ni siquiera relacionados con ese problema) en la red que tenían ese mensaje. Parece que está apareciendo durante al menos medio año.
apsd es un demonio del servicio de notificaciones push de Apple que se ejecuta constantemente
y se conecta a uno de los siguientes servidores de forma aleatoria:
1-courier.push.apple.com
2-courier.push.apple.com
3-courier.push.apple.com
4-courier.push.apple.com
.
.
.
200-courier.push.apple.com
en el puerto 5223 (personalizado, pero SSL )
cada cierto tiempo (para buscar actualizaciones, supongo)
Probar: enlace en el navegador, sin embargo, muestra que hay un problema relacionado con el certificado del servidor. A saber, "Este certificado no es válido (no coincide el nombre de host)" . Lo que supongo es porque Apple no creó un certificado que incluya un comodín en el nombre común. Sin embargo, al utilizar Wireshark veo que la comunicación entre apsd y el servidor de Apple continúa. Pensé que eso no puede ser correcto. ¿Está apsd ignorando la verificación de validez ?!
Luego traté de realizar un ataque de hombre en medio con un certificado autofirmado. Y esto es lo que obtuve en los registros:
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: CFNetwork SSLHandshake failed (-9807)
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Failed to evaluate trust: No error. (0), result=5; retrying with revocation checking optional
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: failed to evaluate trust: No error. (0), result=5; retrying with system roots
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Failed to evaluate trust: No error. (0), result=5
Apr 27 15:42:07 Ivans-MacBook-Pro.local apsd[194]: Untrusted peer, closing connection immediately
También vale la pena señalar que he visto (al observar el tráfico real con Wireshark) que el servidor requiere que el cliente envíe su certificado. Y apsd envía:
Nombre del sujeto
Nombre común XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX (UUID)
Nombre del emisor
País EE.UU.
Organización Apple Inc.
Unidad de organización Apple iPhone
Nombre común Apple iPhone Device CA
.
.
.
¿Es extraño que Mac OS X esté enviando lo que parece ser una clave pública que se presenta como iPhone? Tengo instalado Xcode, si está relacionado de alguna manera con la instalación de simuladores de iPhone. Pero recibo el mensaje de registro mencionado todas las veces, independientemente de si Xcode se está ejecutando o no. Y, evidentemente, otros también lo son, a juzgar por los registros en Internet.
Entonces, ¿qué está pasando?
¿De qué manera apsd puede descubrir mi certificado falso y aprobar el suyo?
¿Hay algún problema aquí?
Nota: La implementación de Mi MitM es bastante simple, con la falsificación de DNS le doy a apsd una respuesta que X-courier.push.apple.com es 127.0.0.1. Luego escucho con un certificado autofirmado que imita el certificado del servidor de Apple (país, organización, nombre común ...). PERO no implementé el requisito del certificado de cliente de apsd . Así que todavía no sé si eso está relacionado de alguna manera con mi MitM fallido. ¿Podría ser?
¿Están ustedes allí en Mac OS X recibiendo el mismo mensaje de registro en su consola (aparece en 'Todos los mensajes' justo cuando lo inicia, pero en realidad está en system.log), escriba 'hoja' en el cuadro de búsqueda ...
ACTUALIZACIÓN:
He implementado solicitando al cliente su certificado. Es lo mismo (SSLHandshake failure / Failed para evaluar la confianza). Así que apsd está revisando algo, pero no estoy muy seguro de que se haya implementado de la manera correcta. Esperemos que alguien con mucha más experiencia investigue esto ...