Quiero codesign
una de mis aplicaciones usando mi propio certificado (no creado con Keychain Access).
Primero, creo un archivo v3.ext
:
keyUsage = digitalSignature
Luego, creo mi certificado con openssl
:
$ openssl genrsa -des3 -out passkey.key 2048
$ openssl rsa -in passkey.key -out mykey.key
$ openssl req -new -key mykey.key -out cert.csr
$ openssl x509 -req -sha256 -extfile v3.ext -days 3650 -in cert.csr -signkey mykey.key -out mycertificate.crt
$ openssl pkcs12 -export -in mycertificate.crt -inkey mykey.key -out certificate.p12 -name "Nombre de mi empresa"
Importé certificate.p12
en Keychain Access arrastrándolo al docker. Ahora, al intentar firmar mi aplicación, tengo este error:
$ security find-identity
Política: X.509 Básico
Identidades coincidentes
11) 5DC3086CAD3848A22FB6E614FB8836BDDBD18938 "Nombre de mi empresa" (CSSMERR_TP_NOT_TRUSTED)
$ codesign --deep -fs 5DC3086CAD3848A22FB6E614FB8836BDDBD18938 repro.app
: esta identidad no puede usarse para firmar código
Sin embargo, podemos ver que este certificado se puede usar para verificar (CSSM_KEYUSE_VERIFY
):
$ certtool y
Número de serie : 00 F6 E2 FC FC D1 67 A6 7A
Nombre del emisor :
País : FR
Estado : Some-State
Org : Nombre de mi empresa
Nombre del sujeto :
País : FR
Estado : Some-State
Org : Nombre de mi empresa
Algoritmo de firma del certificado : OID : < 06 09 2A 86 48 86 F7 0D 01 01 0B >
parámetros de alg : 05 00
No antes : 15:09:59 May 13, 2019
No después : 15:09:59 May 10, 2029
Algoritmo de clave pública : OID : < 06 09 2A 86 48 86 F7 0D 01 01 01 >
parámetros de alg : 05 00
Bytes de la clave pública : Longitud 270 bytes : 30 82 01 0A 02 82 01 01 ...
Clave CSSM :
Algoritmo : RSA
Tamaño de la clave : 2048 bits
Uso de la clave : CSSM_KEYUSE_VERIFY
Firma : 256 bytes : 4E F5 B9 35 9D 6A D5 2E ...
Estructura de extensión : OID : < 06 03 55 1D 0F >
Crítico : FALSO
uso : Firma Digital
¿Qué debo hacer para permitir que esta identidad firme código?