TL-DR El certificado de cliente SSL no necesita KeyUsage, pero si está presente, debe ser digitalSignature, excepto por el caso de * DH.
Advertencia: etiquetó SSL, por lo que supongo que por "ruta que requiere un certificado" quiere decir SSL / TLS o algo sobre SSL / TLS (no necesariamente HTTP / S). Si quieres decir algo más como CMS o S / MIME, XML-sig o incluso PGP, la respuesta puede ser diferente.
Me sorprende que no encuentre otras referencias ya que los certificados X.509 son tan ampliamente utilizados. Mi primera página de Google X.509 extensión de uso de la clave da PKIX rfc5280 que es el Internet actualmente efectivo spec y (la forma de texto de) su predecesor rfc3280 ; El artículo de wikipedia no muy bueno; y enlace que tiene (posiblemente sobre-) específico Instrucciones para varios casos incluyendo cliente SSL. Citando la parte relevante de 5280 (que su sitio de IBM más o menos copias):
Bits in the KeyUsage type are used as follows:
The digitalSignature bit is asserted when the subject public key
is used for verifying digital signatures, other than signatures on
certificates (bit 5) and CRLs (bit 6), such as those used in an
entity authentication service, a data origin authentication
service, and/or an integrity service.
The nonRepudiation bit is asserted when the subject public key is
used to verify digital signatures, other than signatures on
certificates (bit 5) and CRLs (bit 6), used to provide a non-
repudiation service that protects against the signing entity
falsely denying some action. In the case of later conflict, a
reliable third party may determine the authenticity of the signed
data. (Note that recent editions of X.509 have renamed the
nonRepudiation bit to contentCommitment.)
The keyEncipherment bit is asserted when the subject public key is
used for enciphering private or secret keys, i.e., for key
transport. For example, this bit shall be set when an RSA public
key is to be used for encrypting a symmetric content-decryption
key or an asymmetric private key.
The dataEncipherment bit is asserted when the subject public key
is used for directly enciphering raw user data without the use of
an intermediate symmetric cipher. Note that the use of this bit
is extremely uncommon; almost all applications use key transport
or key agreement to establish a symmetric key.
The keyAgreement bit is asserted when the subject public key is
used for key agreement. For example, when a Diffie-Hellman key is
to be used for key management, then this bit is set.
The keyCertSign bit is asserted when the subject public key is
used for verifying signatures on public key certificates. If the
keyCertSign bit is asserted, then the cA bit in the basic
constraints extension (Section 4.2.1.9) MUST also be asserted.
The cRLSign bit is asserted when the subject public key is used
for verifying signatures on certificate revocation lists (e.g.,
CRLs, delta CRLs, or ARLs).
The meaning of the encipherOnly bit is undefined in the absence of
the keyAgreement bit. When the encipherOnly bit is asserted and
the keyAgreement bit is also set, the subject public key may be
used only for enciphering data while performing key agreement.
The meaning of the decipherOnly bit is undefined in the absence of
the keyAgreement bit. When the decipherOnly bit is asserted and
the keyAgreement bit is also set, the subject public key may be
used only for deciphering data while performing key agreement.
Esto es necesariamente algo general porque los certificados X.509 (y PKIX) fueron diseñados para ser utilizados para una variedad de cosas, no solo SSL / TLS, aunque ese es el único uso que la mayoría de la gente conoce. Distingue varios tipos de firma, cifrado y acuerdo de clave (que en la práctica se utiliza para el cifrado).
5280/3280 solo obliga a KeyUsage para certificados CA, implícitamente dejándolo opcional para certificados EE. No tengo X.509 real pero AFAIU dice que si KeyUsage no está presente, se trata como un conjunto de bits, ya que es compatible con v1 y v2 antes de que hubiera extensiones. CABforum baseline lo especifica explícitamente como se requiere para certificados CA pero opcional para certificados de "suscriptor" (es decir, EE).
TLSv1.2 (o sus predecesores) requiere un certificado de cliente "Permitir ... firma "excepto para los intercambios de claves fijo-DH y fijo-ECDH que nadie parece usar al menos en la red pública, y las secciones relacionadas explican cómo, excepto para fijo- * DH, la clave del cliente en realidad se usa solo para firmar los datos del protocolo de enlace Para demostrar la posesión por y así autenticar al cliente.
Esto significa que si KeyUsage está presente para el cliente SSL, debe incluir digitalSignature, y dado que, en general, una clave criptográfica no debe usarse para múltiples propósitos sin una fuerte justificación, KeyUsage para el cliente SSL no debe incluir nada más. Si el certificado de cliente no tiene KeyUsage o tiene un KeyUsage no restrictivo, una implementación de SSL / TLS conforme seguirá utilizando esa clave y certificado solo de la manera especificada por el protocolo, que excepto el archivo * fijo como * señalado solo está firmando / Verificación de datos que no sean un certificado o CRL.