Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev.

Capacités cryptographiques

En raison des contraintes de Wasm au moment de la rédaction, certaines bibliothèques cryptographiques ne peuvent pas être compilées en Wasm. En attendant, les politiques SUSE Security Admission Controller nécessitant ces bibliothèques peuvent effectuer des appels de retour pour évaluer les fonctions cryptographiques du côté de l’hôte. Elles reçoivent le résultat et poursuivent leurs tâches.

Comportement

L’hôte Wasm s’appuie sur rustls-wepki pour la mise en œuvre des certificats x.509 et PKI. Cela signifie :

  • Utilisation de la clé : Nous avons choisi d’accepter toute utilisation de clé, ce qui aide à couvrir plusieurs cas d’utilisation (comme d’habitude, veuillez nous contacter si vous souhaitez discuter de différentes approches).

  • Chaînes de certificats : Un certificat sera considéré comme non fiable si son CA intermédiaire est expiré.

  • Dates d’expiration des certificats : Si une chaîne de certificats est fournie, nous validerons toujours l’intégralité de la période de validité du certificat. Wepki ne vérifie pas l’expiration du CA racine.

  • Nous validons toujours le certificat, et si aucune chaîne n’est fournie, le CA de Mozilla est utilisé.

contrat de protocole WaPC

Si vous implémentez votre propre SDK de langage, voici les fonctions effectuant des vérifications cryptographiques exposées par l’hôte :

fonction waPC - v1/is_certificate_trusted entrée

# 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
}

fonction waPC - v1/is_certificate_trusted sortie

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