Ce document présente le plan des tests de validation croisée SSH. Ces tests valident que les certificats SSH générés par QPKI sont compatibles avec les outils OpenSSH natifs (ssh-keygen, sshd).
Note : BouncyCastle ne supporte pas le format de certificat OpenSSH. Les cross-tests SSH utilisent exclusivement les outils OpenSSH.
Métrique Valeur Validateur OpenSSH (ssh-keygen, sshd) Tests 13 cas de test Artefacts testés User cert, Host cert, KRL Algorithmes Ed25519, ECDSA-P256, RSA-4096 Emplacement test/crossval/ssh/
# Générer les fixtures SSH
make crosstest-ssh-fixtures
Artefact TC-ID Prefix Algorithmes testés Outil de validation User Certificate TC-XSSH-UCERT Ed25519, ECDSA-P256, RSA-4096 ssh-keygen -LHost Certificate TC-XSSH-HCERT Ed25519, ECDSA-P256, RSA-4096 ssh-keygen -LUser Auth E2E TC-XSSH-AUTH Ed25519 sshd + sshPrincipals TC-XSSH-PRINC Ed25519 ssh-keygen -L, sshdValidity TC-XSSH-VALID Ed25519 ssh-keygen -L, sshdExtensions TC-XSSH-EXT Ed25519 ssh-keygen -LKRL TC-XSSH-KRL Ed25519 ssh-keygen -Q
├── run_all.sh # Orchestrateur
│ ├── verify_user_cert.sh # TC-XSSH-UCERT-*
│ ├── verify_host_cert.sh # TC-XSSH-HCERT-*
│ ├── verify_auth.sh # TC-XSSH-AUTH-*
│ ├── verify_principals.sh # TC-XSSH-PRINC-*
│ ├── verify_validity.sh # TC-XSSH-VALID-*
│ ├── verify_extensions.sh # TC-XSSH-EXT-*
│ └── verify_krl.sh # TC-XSSH-KRL-*
├── results-ssh.json # Résultats JSON
└── ctrf-crosstest-ssh.json # Export CTRF pour CI
Script TC-IDs Description Commande verify_user_cert.shTC-XSSH-UCERT-* Vérifie structure certificat user ssh-keygen -Lverify_host_cert.shTC-XSSH-HCERT-* Vérifie structure certificat host ssh-keygen -Lverify_auth.shTC-XSSH-AUTH-* Authentification E2E avec sshd sshd + sshverify_principals.shTC-XSSH-PRINC-* Validation des principals ssh-keygen -L, sshdverify_validity.shTC-XSSH-VALID-* Fenêtre de validité, rejet expiré ssh-keygen -L, sshdverify_extensions.shTC-XSSH-EXT-* Critical options, permissions ssh-keygen -Lverify_krl.shTC-XSSH-KRL-* Révocation via KRL ssh-keygen -Q
TC-ID Nom Algorithme Résultat attendu TC-XSSH-UCERT-ED25519 User cert Ed25519 Ed25519 ssh-keygen -L OK, type user certificateTC-XSSH-UCERT-ECDSA User cert ECDSA ECDSA-P256 ssh-keygen -L OK, type user certificateTC-XSSH-UCERT-RSA User cert RSA RSA-4096 ssh-keygen -L OK, type user certificate
TC-ID Nom Algorithme Résultat attendu TC-XSSH-HCERT-ED25519 Host cert Ed25519 Ed25519 ssh-keygen -L OK, type host certificateTC-XSSH-HCERT-ECDSA Host cert ECDSA ECDSA-P256 ssh-keygen -L OK, type host certificateTC-XSSH-HCERT-RSA Host cert RSA RSA-4096 ssh-keygen -L OK, type host certificate
TC-ID Nom Description Résultat attendu TC-XSSH-AUTH-ED25519 Auth E2E Ed25519 sshd accepte le certificat user Connexion SSH réussie
TC-ID Nom Description Résultat attendu TC-XSSH-PRINC-OK Principals match Principal listé dans le cert Authentification acceptée TC-XSSH-PRINC-DENY Principals reject Principal non listé Authentification refusée
TC-ID Nom Description Résultat attendu TC-XSSH-VALID Fenêtre de validité Dates Valid After/Before correctes ssh-keygen -L affiche les datesTC-XSSH-EXPIRED Cert expiré rejeté Certificat avec validité passée sshd refuse le certificat
TC-ID Nom Description Résultat attendu TC-XSSH-EXT-FC Force-command Critical option force-command ssh-keygen -L affiche la restrictionTC-XSSH-EXT-SA Source-address Critical option source-address ssh-keygen -L affiche la restriction IPTC-XSSH-EXT-PTY Permit-pty Extension permit-pty ssh-keygen -L affiche la permission
TC-ID Nom Description Résultat attendu TC-XSSH-KRL-CHK Cert révoqué détecté Certificat révoqué dans KRL ssh-keygen -Q indique révoquéTC-XSSH-KRL-PASS Cert non révoqué passe Certificat absent de la KRL ssh-keygen -Q indique OKTC-XSSH-KRL-SER Révocation par serial Cert révoqué par numéro de série ssh-keygen -Q indique révoqué
Les fixtures sont des artefacts SSH générés par QPKI utilisés comme entrée des tests.
# Génère toutes les fixtures SSH
./test/crossval/generate_qpki_ssh_fixtures.sh
make crosstest-ssh-fixtures
test/crossval/fixtures/ssh/
├── user-ca/ # CA user par algorithme
├── host-ca/ # CA host par algorithme
├── user-certs/ # Certificats user émis
│ ├── ecdsa-p256-cert.pub
├── host-certs/ # Certificats host émis
│ ├── ecdsa-p256-cert.pub
Job Tests Durée estimée Prérequis crosstest-sshTC-XSSH-* ~5 min OpenSSH (préinstallé)
name : " [Interop] OpenSSH Certificates "
- uses : actions/checkout@v6
uses : actions/download-artifact@v8
- name : " [SSH] Verify OpenSSH Version "
- name : " [SSH] Generate SSH Fixtures "
chmod +x test/crossval/generate_qpki_ssh_fixtures.sh
./test/crossval/generate_qpki_ssh_fixtures.sh
- name : " [SSH] Run SSH Cross-Tests "
- name : " [SSH] Upload Results "
uses : actions/upload-artifact@v7
test/crossval/ssh/results/ctrf-crosstest-ssh.json
test/crossval/ssh/results/results-ssh.json
# Vérifier le format du fichier
# Doit être "OpenSSH ... certificate"
ssh-keygen -L -f cert.pub
/usr/sbin/sshd -d -p 2222
ssh -vvv -p 2222 -o CertificateFile=cert.pub user@localhost
ssh-keygen -Q -f revoked.krl cert.pub
# Si erreur "not a KRL" : le fichier n'est pas au format binaire OpenSSH KRL