Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Esta es documentación inédita para Admission Controller 1.34-dev.

Capacidades criptográficas

Debido a las limitaciones de Wasm en el momento de escribir, algunas bibliotecas criptográficas no pueden ser compiladas a Wasm. Mientras tanto, las directivas SUSE Security Admission Controller que necesitan esas bibliotecas pueden realizar llamadas de retorno para evaluar las funciones criptográficas en el lado del host. Reciben el resultado y continúan con sus tareas.

Comportamiento

El host de Wasm se basa en rustls-wepki para la implementación de certificados x.509 y PKI. Esto significa:

  • Uso de clave: Hemos decidido aceptar cualquier uso de clave, lo que ayuda a cubrir varios casos de uso (como siempre, por favor, póngase en contacto si desea discutir diferentes enfoques).

  • Cadenas de certificados: Un certificado se considerará no confiable si su CA intermedia ha expirado.

  • Fechas de expiración de certificados: Si se proporciona una cadena de certificados, siempre validaremos el período de validez completo del certificado. Wepki no verifica la expiración de la CA raíz.

  • Siempre validamos el certificado, y si no se proporciona ninguna cadena, se utiliza la CA de Mozilla.

Contrato del protocolo WaPC

Si estás implementando tu propio SDK de lenguaje, estas son las funciones que realizan verificaciones criptográficas expuestas por el host:

función waPC - v1/is_certificate_trusted entrada

# Certificate:
{
  # **mandatory**: Which encoding is used by the certificate
  # Either the string "Pem" or "Der".
  "encoding": string,
  # Actual certificate
  # The certificate is UTF-8 encoded.
  # It's an array of bytes of the unicode code pointers of a PEM/DER encoded
  # certificate string.
  "data": [byte(int), ..., byte(int)]
}

{
  # **mandatory**: PEM-encoded certificate to verify
  "cert": Certificate,
  # optional:
  "cert_chain": [
      # list of certs, ordered by trust
      # usage (intermediates first, root last)
      # If not provided, Mozilla's CA is used.
      Certificate,
      ...
      Certificate,
    ],
  # RFC 3339 time format string, to check expiration
  # against.
  # If missing, time is now.
  "not_after": string
}

función waPC - v1/is_certificate_trusted salida

{
   # true if certificate verified:
   "trusted": boolean,
   # empty if trusted == true:
   "reason": string
}