Como verificar se o arquivo .sig está correto?

1

Eu emiti os seguintes comandos para criar uma assinatura para um arquivo (kernel Linux):

openssl req -newkey rsa -keyout codesign.key -out codesign.req
openssl ca -config ca.cnf -extensions codesigning -in codesign.req -out codesign.crt

openssl cms -sign -binary -noattr -in vmlinuz -signer codesign.crt -inkey codesign.key -certfile ca.crt -outform DER -out vmlinuz.sig

O arquivo ca.cnf é para minha própria infraestrutura de CA privada e tem extensão de uso de chave digitalSignature e a extensão de uso de chave estendida codeSigning ativada.

formato Ca.cnf:

[ca]

default_ca = ca_default

[ca_default]

certificado = ca.crt

private_key = ca.key

serial = ca.srl

banco de dados = ca.idx

new_certs_dir = / home / apoorv / projects / signed

default_md = default

policy = policy_anything

preserve = yes

default_days = 90

unique_subject = no

[policy_anything]

countryName = opcional

stateOrProvinceName = opcional

localityName = opcional

organizationName = opcional

organizationalUnitName = opcional

commonName = opcional

emailAddress = opcional

[cruzar]

basicConstraints = critical, CA: true

keyUsage = crítico, cRLSign, keyCertSign

[codesigning]

keyUsage = digitalSignature

extendedKeyUsage = codeSigning

Comando: openssl cms -verify -binary -conteúdo vmlinuz -inform DER -em vmlinuz.sig -CAfile ca.crt

Saída:

Falha na verificação 140187569694352: erro: 2E099064: Rotinas do CMS: CMS_SIGNERINFO_VERIFY_CERT: erro de verificação de certificado: cms_smime.c: 287: Verifique o erro: finalidade de certificado não suportada

Você poderia por favor fornecer alguma entrada? Muito obrigado.

    
por entropy 08.04.2016 / 16:38

1 resposta

1

Como deve ficar claro na página do manual do seu sistema ou on-line , supondo que o certificado da CA tenha sido especificado no seu ca.cnf é ca.crt e é o certificado raiz, a função básica que você quer é

openssl cms -verify -binary -content vmlinuz -inform der -in vmlinuz.sig -CAfile ca.crt 

exceto por padrão, requer ExtendedKeyUsage se presente inclui "emailProtection" id-pkix 3 4 não (somente) codeSigning; para substituir isso, adicione -purpose any .

Se a hierarquia de certificados for mais complicada - ou seja, se ela usar uma cadeia -, haverá vários casos, dependendo do (s) certificado (s) incluído (s) no arquivo de assinatura com -certfile , que certificado (s) estão em seu arquivo trustore padrão ou especificado e / ou em -certfile se usado e se você especificar -partial_chain em 1.0.2 up, e sem uma pergunta mais específica eu não tenho tempo para escrever tanto. / p>     

por 09.04.2016 / 06:15

Tags