feat(ca): dépôt public des certificats + marquage STAGING - #10
Merged
Merged
Conversation
- ca-server sert désormais une page HTML lisible sur GET / : sujet,
émetteur, numéro de série, validité et empreinte SHA-256 de chaque
certificat de la hiérarchie chargée, plus les liens vers les
ressources déjà servies en brut (.cer, .crl, chaîne PEM, matrice de
conformité). Aucune mention 'staging' codée en dur : c'est le Subject
réel des certificats qui identifie l'environnement.
- values-staging.yaml fixe désormais des noms explicites
('Open eIDAS STAGING Root CA - NE PAS UTILISER EN PRODUCTION', etc.)
pour root/issuing/TSU/OCSP — jusqu'ici identiques à ce qu'une vraie CA
de production porterait. N'a d'effet que sur une prochaine cérémonie
de clé : la hiérarchie déjà amorcée sur le staging actuel n'est pas
renommée rétroactivement.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved moderate issues remain with public route exposure and masked serialization failures.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds a public CA HTML repository page with certificate metadata and explicit STAGING certificate names.
Changes:
- Exposes certificate subjects, validity, fingerprints, and download links.
- Adds STAGING identities in Helm values.
- Adds integration coverage and the
sha2dependency.
File summaries
| File | Description |
|---|---|
deploy/helm/open-eidas/values-staging.yaml |
Defines explicit STAGING certificate names. |
Cargo.lock |
Records dependency updates. |
bin/ca-server/tests/crl_publication.rs |
Tests the public repository page. |
bin/ca-server/src/http.rs |
Implements HTML rendering and certificate metadata. |
bin/ca-server/Cargo.toml |
Adds SHA-256 support. |
Review details
Suppressed comments (4)
bin/ca-server/src/http.rs:195
- En cas d'échec de sérialisation,
unwrap_or_default()hash une tranche vide et la page affiche donc l'empreinte SHA-256 de l'entrée vide comme si elle appartenait au certificat rendu. Cela masque l'erreur et produit une métadonnée impossible à vérifier ; faites remonter l'échec ou rendez explicitement le certificat indisponible au lieu de substituer des octets vides.
let der = cert.to_der().unwrap_or_default();
bin/ca-server/src/http.rs:289
- Cette nouvelle route publique n'est pas ajoutée au tableau des chemins de publication de
docs/CA.md, qui ne liste actuellement que/downloadet/api/v1. Les opérateurs et auditeurs ne découvriront donc ni le dépôt HTML ni les métadonnées qu'il expose ; documentezGET /dans la même évolution.
.route("/", get(handle_repository))
bin/ca-server/tests/crl_publication.rs:160
- Le nouveau test ne vérifie que deux Subjects et un lien PEM, alors que cette page introduit aussi l'émetteur, la série, la validité, l'empreinte SHA-256 et les liens DER/CRL/conformance. Une régression supprimant ces éléments passerait ; ajoutez au moins une assertion pour chaque champ et lien exposé.
assert!(
html.contains("Test Issuing CA"),
"sujet de la CA émettrice absent"
);
assert!(
deploy/helm/open-eidas/values-staging.yaml:67
- Ce commentaire indique qu'effacer les tokens et l'état suffit pour qu'une nouvelle cérémonie prenne les nouveaux CN, mais
run_ceremonyréutilise d'abord la hiérarchie trouvée dans leStore; en staging, ce registre est le PostgreSQL externe. Sans le préciser, un opérateur peut effacer les PVC tout en conservant les anciens noms ; mentionnez explicitement le registre PostgreSQL dans la remise à zéro.
# quels). Gravé dans les certificats à la cérémonie de clé — un
# changement ici n'a AUCUN effet sur une hiérarchie déjà amorcée, seule
# une nouvelle cérémonie (tokens/état effacés) en tient compte.
- Files reviewed: 3/5 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| let ca_path = server.ca_path.clone(); | ||
| let crl_path = server.crl_path.clone(); | ||
| Router::new() | ||
| .route("/", get(handle_repository)) |
1 of 2 tasks
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.
Résumé
ca-serversert une page HTML surGET /: sujet, émetteur, numéro de série, validité et empreinte SHA-256 de chaque certificat de la hiérarchie chargée (émetteur puis racine), plus les liens vers.cer/.crl/chaîne PEM/matrice de conformité déjà servis en brut. Aucun texte « staging » codé en dur : la page ne fait qu'afficher le Subject réel des certificats.values-staging.yamlfixe des noms explicites (Open eIDAS STAGING Root CA - NE PAS UTILISER EN PRODUCTION, etc.) pour root/issuing/TSU/OCSP — jusqu'ici identiques à ce qu'une vraie CA de production porterait.Plan de test
cargo test -p ca-server(nouveau test : la page liste bien le sujet réel de chaque certificat)cargo clippy --workspace --all-targets -- -D warnings,cargo fmt --checkhelm templateavecvalues-staging.yaml: les nouveaux CN sont bien injectés