OpenSSL x509 Sinalizador de Propósito “Qualquer Propósito” O que é isto?

5

Olhando os detalhes de um certificado usando o seguinte:

openssl x509 -noout -text -purpose -in mycert.pem

Eu acho um monte de sinalizadores de propósito (que descobri serem definidos pelas várias extensões anexadas a um certificado).

Um desses sinalizadores de finalidade é "Qualquer finalidade". Não consigo encontrar QUALQUER documentação neste sinalizador e por que ou porque não está definido.

Algum de vocês sabe onde posso encontrar mais informações sobre esse propósito e o que isso significa?

Obrigado,

    
por Nick 10.02.2010 / 18:51

7 respostas

3

As linhas Any Purpose : Yes e Any Purpose CA : Yes do openssl x509 -purpose são especiais. Ele é específico do openssl e representa para o qual o certificado será validado quando usado com versões de software antigas que não verificam extensões.

Estes sinalizadores de finalidade específica não podem ser desativados ou desativados. De openssl, a verificação de finalidade de origem é definida em openssl / crypto / x509v3 / v3_purp.c como estática X509_PURPOSE xstandard [] = {…}. A função de validação de verificação X509_PURPOSE_ANY retorna 1.

O mais próximo da documentação oficial sobre esta bandeira é provavelmente esses posts do Dr. Stephen N. Henson, autor de v3_purp.c - link e link .

Para citar Steve:

'The "Any Purpose" setting is something which lets anything through and performs no checks at all. It was put there originally as a way for people to use broken certificates if they had no other choice and could live with the consequences... Since then CA checks have been made mandatory in the code even if "Any Purpose" is set. So if you actually tried to use that certificate as a CA it would be rejected.'

    
por 27.12.2016 / 12:36
1

Nos certificados X.509, como na maioria das outras coisas, se um termo não for explicitamente definido, ele herda o significado do contexto imediatamente adjacente. Se esse contexto é "vida", então a frase "Qualquer propósito" significa literalmente isso.

Portanto, verifique a Política de Certificados, o Contrato de Assinante e o Contrato de Parte Confiante da CA emissora e, se eles não disserem nada sobre a bandeira, significa o que está escrito na caixa.

    
por 20.08.2012 / 03:45
1

O KeyUsage é uma extensão v3, que pode ou não estar presente em um certificado.

Um resumo útil (se um pouco datado) dos valores da chave id-ceUsage: link [valores recém-adicionados são 7 = encipherOnly e 8 = decipherOnly]

O truque é que essa "OID = 2.5.29.15 keyUsage extension" / pode ou não estar presente em um determinado certificado.

O que o OpenSSL provavelmente pressupõe com PURPOSE_ANY, é que essa extensão não estava presente /, e que, portanto, é "até sua própria política" decidir o que usar ou não usar. Caso contrário, não há valor de bitmap que corresponda a "ANY" ...

    
por 30.06.2014 / 13:25
1

Normalmente, defino "AnyPurpose" na CA raiz (o que significa que é a raiz e posso emitir certificados para qualquer outra AC intermediária ou secundária) e, ao emitir a CA dos intermediários, defino as restrições ...

Minha CA raiz tem:

  • AnyPolice 2.5.29.32.0,
  • CA: verdadeiro 2.5.4.37,
  • AnyPurpose 2.5.29.15,
  • DigitalSignature 2.5.4.37.3,
  • Pontos de distribuição da CRL 2.5.29.31,

No meu TLS CA intermediário para o Exemplo I, defina:

  • Web ServerAuth TLS 1.3.6.1.5.5.7.3.1,
  • Web ClientAuth 1.3.6.1.5.5.7.3.2

Isso limita a autoridade de certificação TLS da herança de todos os atributos da autoridade de certificação raiz (os OIDs restritivos aplicados aqui permitirão apenas assinar certificados TLS e com o pathlen: 0, proibirei os subs de segurança).

Tudo depende de como você define sua infraestrutura de PKI.

Na minha rede, faço uma CA intermediária por objetivo, por exemplo:

  • CA intermediária para e-mails
  • CA intermediária para TLS
  • CA intermediário para software
  • CA intermediária para identidade
  • CA intermediária para componentes

Dessa forma, se houver um problema com um certificado de e-mail, só preciso revogar a CA de e-mail enquanto todas as outras CAs intermediárias estão bem.

As grandes autoridades de certificação têm, por exemplo, uma CA intermediária dedicada ao VE.

Nota: Isto é para PKI pessoal, se você desejar fazer algo seguindo as RFCs e as melhores práticas como as grandes Autoridades de Certificação, então há muitas estipulações extras, como incluir muito mais OIDs e configurar todos eles ...

Por exemplo, você pode ler alguns dos padrões neste link:

link

Outro exemplo, para certificados EV, há muitos OIDs de configuração de etapas extras:

  • Domínio validado 2.23.140.1.2.1
  • Organização validada 2.23.140.1.2.2

E como minha configuração não precisa disso, não gasto meu tempo pesquisando e testando os OIDs necessários para obter esse trabalho

    
por 20.09.2015 / 10:16
0

De: link

Uso de chave: finalidade da chave pública (por exemplo, codificação, assinatura, assinatura de certificado ...).

Veja o sinalizador -purpose nos documentos do openssl: link

    
por 10.02.2010 / 19:21
0

A maioria dos certificados é emitida com um propósito (ou conjunto de finalidades) ao qual eles são restritos, como a autenticação do cliente, a autenticação do servidor, a troca de chaves e a assinatura de código. Se eles são usados para uma finalidade não endossada (por exemplo, usando seu certificado de e-mail para assinar o código), eles não são válidos.

A extensão de qualquer propósito significa simplesmente que o certificado deve sempre passar restrições de uso, o que é o mesmo que dizer que é válido para todos os usos.

    
por 20.08.2012 / 04:06
0

A 'finalidade' do OpenSSL não é apenas um reflexo direto da extensão Key-Usage de um certificado v3.

O OpenSSL define um conjunto de propósitos e, em seguida, possui uma lógica que determina se um determinado certificado é consistente com a finalidade escolhida com base nas extensões de certificado - incluindo, mas não se limitando a uso de chave e uso de chave estendida extensões.

'Qualquer Finalidade' é o que você obtém se passar -purpose any para openssl verify ou se você escrever um código que defina o propósito de um contexto OpenSSL para o valor 'qualquer' usando, por exemplo, SSL_CTX_set_purpose() .

A maioria das finalidades está documentada em man x509 section CERTIFICATE EXTENSIONS - explica quais propriedades o certificado deve ter para ser válido para o propósito determinado - mas isso não documenta a finalidade any . Na origem, na parte superior de crypto/x509v3/v3_purp.c , você pode ver que a função de verificação é executada por X509_PURPOSE_ANY is no_check() , que simplesmente retorna 1: efetivamente desativa a verificação de finalidade.

Não tenho certeza se você poderia projetar uma situação em que qualquer certificado não seja válido para a finalidade any . Eu também não tenho certeza qual é a diferença entre definir a finalidade para any e não definir uma finalidade, o que deve fazer com que a verificação de finalidade seja totalmente ignorada.

Especificamente, o conceito X509_PURPOSE_ANY / "Any Purpose" / -purpose any do OpenSSL é não a mesma coisa que o RFC 5280 anyExtendedKeyUsage KeyPurposeId.

    
por 15.01.2015 / 09:38