Repository navigation
feat(ca-server): lien interne (routes, mTLS) et enregistrement de clé des opérateurs - #19
Merged
Merged
Conversation
… des opérateurs Route interne, sur un second port désactivé par défaut (OPENEIDAS_INTERNAL_LISTEN) : - POST /internal/v1/challenge et /internal/v1/actions, câblées sur oe_actions::Service et le journal réel ; l'exécution n'accepte aucun corps, seul celui figé à l'émission du challenge s'exécute ; - POST /internal/v1/register/begin et /finish : enregistrement de la clé avec le jeton d'invitation. L'invitation d'amorçage place la clé dans le registre, toute autre la range dans pending_credentials (migration 0004) en attente de confirmation ; - chargeur de la liste blanche de modèles de clés (OPENEIDAS_WEBAUTHN_MODELS_FILE). mTLS du lien interne, terminé par ca-server (TLS 1.3 seul) : - profils internal_client (CN imposé ra-console) et internal_server (SAN repris du CN), EKU unique et politique dédiée, contrôlés par oe-conformance sur le certificat réellement signé ; - à chaque connexion, avant toute requête : EKU, politique, nom courant, présence dans la table certificates sous le bon profil, identique octet pour octet, non révoqué ; - sans TLS, le port interne reste limité à la boucle locale ; - ca-server internal-cert server <dns> : clé logicielle (0600), demande et écriture du certificat après approbation. Les OID de politique sont provisoires (sous le numéro d'entreprise 0) et à remplacer par l'arc de l'association. oe-castore : build.rs, car sqlx::migrate! n'est pas recompilé à l'ajout d'un fichier de migration.
This was referenced Sep 19, 2026
Merged
…ement CodeQL signale trois « Cleartext logging of sensitive information » sur cette PR : deux messages de ca-server operators internal-cert, et le message d'un panic! de test d'oe-raflow. Ce sont des faux positifs (un certificat est une donnée publique, l'identifiant de demande aussi), mais l'analyse de flux traite comme sensible toute valeur qui dérive d'un SubmitResult, qui porte le certificat, même pour un champ public. - internal-cert n'affiche plus l'identifiant ni l'état de la demande : le chemin du certificat vient de la configuration, et l'opérateur retrouve la demande avec ca-server ra list PENDING ; - le test d'oe-raflow n'affiche plus le résultat entier (un Ok porte le certificat émis), seulement s'il s'agit d'un succès ou de l'erreur. Aucun changement de comportement.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contenu
Trois tranches de l'étape 0 du socle de confiance de la console (docs/WEBUI.md §15), livrées ensemble.
Routes internes (second port, désactivé par défaut :
OPENEIDAS_INTERNAL_LISTEN)POST /internal/v1/challengeet/internal/v1/actions:oe_actions::Servicecâblé sur le journal réel. L'exécution n'accepte aucun corps, seul celui figé à l'émission du challenge s'exécute.POST /internal/v1/register/begin|finish: enregistrement de la clé avec le jeton d'invitation. L'invitation d'amorçage place la clé dans le registre ; toute autre la range danspending_credentials(migration 0004, expiration 72 h).OPENEIDAS_WEBAUTHN_MODELS_FILE).mTLS du lien interne, terminé par
ca-server(TLS 1.3 seul)internal_client(CN imposéra-console) etinternal_server(SAN repris du CN) : EKU unique et politique dédiée, contrôlés paroe-conformancesur le certificat réellement signé.certificatessous le bon profil, identique octet pour octet, non révoqué.ca-server internal-cert server <dns>: clé logicielle (0600), demande, écriture du certificat après approbation.oe-castore: ajout d'unbuild.rs.sqlx::migrate!n'est pas recompilé à l'ajout d'un fichier de migration : une nouvelle migration pouvait être absente du binaire selon l'état du cache (tests instables).Points d'attention pour la relecture
1.3.6.1.4.1.0.1.1et.2, sous le numéro d'entreprise 0 réservé) :2.999est refusé parconst-oid. À remplacer par l'arc de l'association avant toute mise en production, dansoe_conformance::OID_POLICY_INTERNAL_*.Vérifications
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspace(avec PostgreSQL),cargo audit --ignore RUSTSEC-2023-0071: verts.deny_unknown_fieldsde l'exécution, administrateur actif, jeton à usage unique, aiguillage registre / clé en attente).curl: le certificatra-consoleatteint la route à travers le mTLS ; sans certificat, avec un certificat de serveur ou en HTTP clair, la connexion est refusée ; aprèsca-server revoke, elle est refusée avec le motif « certificat révoqué ».