4 votos

Firmado el pkg usando productbuild --distribute pero codesign dice "el objeto de código no está firmado en absoluto"

Estoy firmando mi paquete durante la distribución utilizando

SIGN_IDENTITY_INSTALLER="Developer ID Installer: Pxxxxxxx, LLC (AXXXXXXXXX)"

productbuild --distribution final-distribution.xml --package-path /tmp/installer-temp/package.pkg --resources resources --sign "$SIGN_IDENTITY_INSTALLER" "Package.pkg"

Y esto produce lo que se supone que es

productbuild: Signing product with identity "Developer ID Installer: Pxxxxxxx, LLC (AXXXXXXXXX)" from keychain /Users/michael/Library/Keychains/login.keychain
productbuild: Adding certificate "Developer ID Certification Authority"
productbuild: Adding certificate "Apple Root CA"
productbuild: Wrote product to Product.pkg

Pero cuando voy a verificar la firma no hay nada.

codesign -dv --verbose=4 Product.pkg 
Product.pkg: code object is not signed at all <----WHAT?

¿Se supone que debo firmar con la aplicación de ID de desarrollador y no con el instalador de ID de desarrollador?

Todos los certificados existen en el llavero y funcionan bien.

Edición 1 Consulte los certificados en el Portal del Desarrollador de Apple. enter image description here

4voto

Steve Evans Puntos 155

Utilice spctl no codesign

El codesign no funciona con archivos de paquetes, .pkg .

Utilice el spctl herramienta en su lugar:

/usr/sbin/spctl --assess --ignore-cache --verbose --type install <pkg-path>

Alternativamente, Installer.app

También puede comprobar el certificado del paquete mediante Installer.app:

  1. Abra el paquete en el Installer.app de MacOS;
  2. Haga clic en el candado de la parte superior derecha de la ventana del instalador.

Installer certificate in macOS

1voto

Udhy Puntos 3

Para firmar paquetes de MacOS, necesitará acceder a una cuenta de desarrollador de Apple. Los certificados de firma se pueden generar a través de la cuenta de desarrollador de Apple.

Se deben cumplir dos requisitos básicos para desplegar los PKG de MacOS:

  1. El archivo .pkg se construye como un archivo de producto.
  2. Para distribuir como una app empresarial, el archivo .pkg debe estar firmado con un ID de desarrollador obtenido de una cuenta de empresa de desarrollador de Apple. Para todas las demás apps que se distribuyan a través del Mac App Store, el archivo .pkg se firma con el certificado "Developer ID Installer", obtenido de una cuenta de desarrollador de Apple.

Estoy usando pkgbuild y productbuild para ello y lo siguiente es mi script:

Pasos para crear y firmar un archivo PKG de MacOS

  • Construya el archivo .pkg utilizando el comando pkgbuild.

    sudo pkgbuild --component /path_to_installed_app/macapp.app --install-location /Applications --sign "Developer ID Installer: *******" /path_to_saved_package/packagename.pkg

Aquí, el texto entrecomillado se refiere al nombre de su certificado. Los dos argumentos especifican la ubicación del archivo .app ya instalado (/ruta_a_la_aplicación_instalada/macapp.app) y la ubicación del archivo .pkg recién generado (/ruta_al_paquete_guardado/nombre_del_paquete.pkg), respectivamente.

  • Firme el archivo .pkg utilizando el comando productbuild.

    sudo productbuild --package /path_to_saved_package/packagename.pkg --content /path_to_app/ --sign "Developer ID Installer: *******" /path_to_signed_pkg/signed.pkg

Aquí, el texto citado se refiere al nombre del certificado. Los dos argumentos especifican la ubicación del archivo .pkg recién generado (/ruta_al_paquete_guardado/nombre_del_paquete.pkg) y la ubicación del archivo .pkg firmado (/ruta_al_paquete_firmado/signado.pkg), respectivamente.

Pasos para firmar archivos PKG de MacOS

  • Abra Keychain Access en el Mac y localice el certificado. El nombre del certificado debe tener el formato Instalador de ID de desarrollador: Nombre de la cuenta de Apple (número de serie).

  • Abra el terminal. El comando para firmar el paquete debe ser algo así:

    productsign -sign “Developer ID Installer: Your Apple Account Name (**********)” ~/Desktop/example.pkg ~/Desktop/signed-example.pkg

Aquí, el texto entrecomillado que sigue a la etiqueta -sign hace referencia al nombre de su certificado. Los dos argumentos, que siguen al nombre del certificado, se refieren a la ubicación actual del paquete sin firmar (/Desktop/ejemplo.pkg) y a la ubicación del paquete firmado (/Desktop/signo-ejemplo.pkg), respectivamente.

El certificado firmado se almacena en la ruta de destino especificada en el comando.

Espero que esto aclare tus dudas y te guíe para tener una solución adecuada.

0 votos

Gracias por su respuesta. Por favor, vea mi edición con la captura de pantalla. ¿No son estos los certificados que necesito? Los que estoy firmando los creé en el portal de desarrolladores.

0 votos

Efectivamente. Pero ten en cuenta mi punto 2: Para distribuir como una aplicación de empresa, el archivo .pkg debe estar firmado con un ID de desarrollador obtenido de una cuenta de empresa de desarrollador de Apple. Para todas las demás aplicaciones que se distribuyen a través de la Mac App Store, el archivo .pkg se firma con el certificado "Developer ID Installer", obtenido de una cuenta de desarrollador de Apple. ¿Intenta distribuirla en la App Store o como una aplicación de empresa? ¿Utiliza el ID de forma correcta?

0 votos

Así que para desarrollar aplicaciones fuera de la App Store a los usuarios para el consumo, necesito una cuenta de Apple Developer Enterprise y no sólo una cuenta de Apple Developer? No estoy tratando de empujar a la App Store. Sólo distribuirla para su descarga.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X