Hace algún tiempo un usuario publicó en el Foro de Xojo uno de esos casos poco habituales relacionados con los certificados de desarrollo de Apple. Más allá de las mejoras introducidas en Xojo 2026r1, he de admitir que este escenario en particular se escapó. Continúa leyendo para saber más sobre el problema en cuestión… y su solución.
De forma resumida, el problema con el que estaba lidiando el usuario era que el menú desplegable correspondiente a Developer ID estaba presentando la opción correspondiente a un nombre distinto del esperado para el, supuesto, Developer ID Team. De hecho, el usuario no observaba el problema en su segundo Mac.
Debido a ello, el usuario no podía seleccionar ninguna de las opciones correspondientes a “Build For” porque, simplemente, el resto de los certificados de desarrollo instalados en ese Mac estaban generados para el mismo Team ID… pero usando un Nombre de Compañía (Company Name) diferente.
Por tanto, y en este caso en particular, hay un par de atributos OIDs correspondientes a los certificados X.509 que son de un interés particular:
- 2.5.4.11 Unit Name; mostrado como OU u Organizational Unit Name. Se corresponde con el Team ID utilizado por los certificados de desarrollo de Apple, y es único. ¡Nunca cambia una vez asignado!
- 2.5.4.10 Legal Entity o Company Name; mostrado como O u Organization Name. Este valor puede modificarse desde el portal Apple Developer, bajo Cuenta > Detalles de Membresía (siempre que la membresía al programa de desarrollador se corresponda con una empresa y no a título individual).
El problema subyacente
En este caso en particular convergieron varios elementos:
- El certificado generado para el nombre de Team ID no esperado había expirado hacía tiempo y se había mantenido instalado en ese Mac. No es un gran problema, ya que Xojo tiene en cuenta los certificados expirados.
- Dado a que dicho certificado en concreto fue instalado en dicho Mac mucho, mucho antes de que se hubiesen instalado el resto (es decir, los esperados y en los que se utilizaba el Organization Name actual), la iteración por los certificados instalados a nivel del sistema para su recolección se encontraba en primer lugar con el certificado expirado, asignando por lo tanto el Organization Name de dicho certificado para el resto de los certificados que se encontrasen para el mismo valor de Team ID.
Siendo conscientes de dicho comportamiento, este se ha corregido para Xojo 2026r3.
La Solución
La solución para este extraño caso en particular fue realmente sencillo una vez que se vió lo que estaba ocurriendo: borrar el certificado que ya había expirado, utilizando para ello la app Acceso a Llaveros en ese Mac o incluso el Inspector de Certificados incluido en Xojo.
La Receta
Si por cualquier motivo te estás encontrando con este mismo problema u otro similar cuando se trata de seleccionar un Team ID dado, o si no se encuentran listadas las opciones esperadas en el menú desplegable Build Options, entonces la la opción “Inspect…” bajo el menú desplegable Developer ID es lo primero que deberías de hacer.
Dicho Inspector de Certificados listará todos los certificados instalados para cada Team de una forma sencilla en comparación con tener que lidiar con ello desde la app Acceso a Llaveros. Además, encontrarás información adicional y, cuando es posible, incluso la posibilidad de aplicar acciones directas para solucionar algunos de los problemas más frecuentes relacionados con los certificados de desarrollador de Apple.
Revisar los Certificados con mayor profundidad
Opcionalmente, o si estás ejecutando una versión de Xojo anterior a Xojo 2026r1, entonces puedes ejecutar simplemente el siguiente script desde una ventana del Terminal:
security find-certificate -a -p | awk '/---BEGIN CERTIFICATE---/{flag=1; print; next} /---END CERTIFICATE---/{print; flag=0; print "---END---"} flag' | while IFS= read -r line; do if [ "$line" = "---END---" ]; then echo "$cert" | openssl x509 -noout -subject -enddate 2>/dev/null; cert=""; else cert="$cert$line"$'\n'; fi; doneLa salida mostrará todos los certificados de desarrollador de Apple encontrados en tu equipo, proporcionándote algunas piezas de información que puedes revisar:
- CN = Common Name. Aquí puedes ver si se trata de un certificado de tipo Development, Developer ID Application, o bien de cualquiera de los otros tipos de certificado emitidos por Apple.
- OU = Team ID. Recuerda que este valor nunca cambia durante tu membresía al Programa de Desarrolladores de Apple.
- O = Organization. Este es el Nombre de Organización asociado actualmente con el certificado. Puede modificarse sólo para el tipo de membresía de desarrollador de Apple correspondiente a empresa, no a individuo.
- notAfter. Este valor es la fecha de expiración para dicho certificado.
Conclusión
Este caso es un buen recordatorio de que los certificados expirados instalados en el Llavero de tu Mac pueden causar problemas inesperados. Gracias a la corrección incorporada en Xojo 2026r3 y al Inspector de Certificados, encontrar y solucionar este tipo de problemas es ahora mucho más sencillo.