ecc-only-what-to-do

ECC-only für SOAP/CMP – Umsetzungsplan

Ziel: ein Laufzeit-Schalter analog allowRsa im SubCA-Plugin, mit dem die SOAP- und CMP-certRequest-Schnittstellen auf „nur ECC“ gestellt werden können. Der Schalter soll zur Laufzeit (Blueprint-Config) umschaltbar sein, nicht hart kodiert.

1. Ziel & Architektur

Die beiden Schnittstellen SOAP und CMP laufen in derselben Validierungsstrecke zusammen, nämlich in ZasCaIntegrationCertificationServiceImpl. Es gibt dort aber zwei getrennte Unterpfade:

Deshalb muss der Schalter an zwei X509-Stellen greifen: einmal im PKCS#10-Pfad (SOAP) und einmal im CRMF-Pfad (CMP). Der CVC-Pfad ist bereits ECC-only und bleibt unverändert.

2. Ist-Zustand (Code-Befund)

StelleDatei:ZeileHeutiges Verhalten
VALID_CVC_ALGORITHM_IDSTmsCaIntConstants.java:536 ECC-OIDs → bereits ECC-only
VALID_X509_ALGORITHM_IDSTmsCaIntConstants.java:62[id_rsa] → SOAP-X509 aktuell RSA-only (ECC wird abgelehnt)
VALID_X509_ROOT_CA_ALGORITHM_IDSTmsCaIntConstants.java:64[id_rsa, id_ecPublickey] → nur SubCA-Pfad, bleibt unverändert
SOAP-X509-GateZasCaIntegrationCertificationServiceImpl.java:506checkPublicKeyAlgorithm(..., VALID_X509_ALGORITHM_IDS)
CMP-X509-Gate (implizit)CertRequestUtils.java:693-701verifyX509Popo akzeptiert RSA oder EC → CMP-X509 aktuell beides
Signatur-Alg-Check PKCS#10CryptUtils.java:285-304Unterstützt ECDSA für EC-Key bereits; keine Änderung nötig
SubCA-Schalter (Vorbild)SubcaAntragsdatenServiceImpl.java:498allowRsa=false ⇒ RSA abgelehnt
Kernaussage: Es gibt keinen bestehenden Laufzeit-Schalter für SOAP/CMP. allowRsa/validation.allowed.rsa greift ausschließlich im SubCA-Plugin (SubcaAntragsdatenServiceImpl). Die SOAP/CMP-Validierung ist hart kodiert (statische Konstante bzw. RSA-oder-EC-Check).

3. Schalter-Design

Neuer Blueprint-Property im bestehenden Persistent-ID de.authentidate.ors1.pki.tms.ca.integration.boundary:

certrequest.allowed.rsa=false

Der Wert wird als allowRsa-Feld in ZasCaIntegrationCertificationServiceImpl injiziert – exakt nach dem Muster des SubCA-Plugins. ECC wird im X509-Pfad damit immer erlaubt; RSA nur, wenn allowRsa=true.

4. Umsetzungsreihenfolge

Task 1 – Config & Schalter-Verdrahtung (Dev)

Modifizieren:
core/ca-intermediate/pms-ca-int-layer-impl/src/main/resources/OSGI-INF/blueprint/config.xml
core/dist/assembly/src/main/unfiltered/etc/de.authentidate.ors1.pki.tms.ca.integration.boundary.cfg
.github/docker/etc/de.authentidate.ors1.pki.tms.ca.integration.boundary.cfg
core/ca-intermediate/pms-ca-int-layer-impl/.../ZasCaIntegrationCertificationServiceImpl.java

Task 2 – X509-Algorithmuslisten dynamisch machen (Dev)

Modifizieren:
core/ca-intermediate/pms-ca-int-layer-utils/.../TmsCaIntConstants.java:59-65
core/ca-intermediate/pms-ca-int-layer-impl/.../ZasCaIntegrationCertificationServiceImpl.java

Task 3 – SOAP-PKCS#10-X509-Gate umstellen + Fehlermeldung verallgemeinern (Dev)

Modifizieren: core/ca-intermediate/pms-ca-int-layer-impl/.../ZasCaIntegrationCertificationServiceImpl.java:230-282, 497-510

Task 4 – CMP-CRMF-X509-Gate (Dev)

Modifizieren:
core/ca-intermediate/pms-ca-int-layer-impl/.../CertRequestUtils.java:681-720
core/ca-intermediate/pms-ca-int-layer-impl/.../ZasCaIntegrationCertificationServiceImpl.java:883

Task 5 – POP-Verifikation im SOAP-PKCS#10-Pfad EC-sicher machen (Dev)

Modifizieren: core/ca-intermediate/pms-ca-int-layer-impl/.../ZasCaIntegrationCertificationServiceImpl.java:512-520

Task 6 – Unit- & Integrationstests (Test)

Test hinzufügen/ergänzen:
core/ca-intermediate/pms-ca-int-layer-impl/src/test/java/.../ZasCaIntegrationCertificationServiceImpl*Test.java (neu/erweitern)
plugins/zertifikatsausstellung/zas-integrationtest/.../SoapTest.java
plugins/zertifikatsausstellung/zas-integrationtest/.../CMPTest.java

Task 7 – Rollout & End-to-End (Integration)

core/dist/assembly/.../de.authentidate.ors1.pki.tms.ca.integration.boundary.cfg · .github/docker/... · Umgebungs-Configs

5. Aufwandsschätzung (Personentage)

PhaseUmfangAufwand
DevTask 1–5 (Verdrahtung, Konstanten, zwei Gates, POP)2,5 – 3,5 PT
TestTask 6 (Unit + SOAP/CMP-Integration + Fixture-Anpassung)2,5 – 3,5 PT
IntegrationTask 7 (Config-Rollout, E2E, Regression, Doku)1,5 – 2,0 PT
Summeohne Puffer6,5 – 9,0 PT

Mit ~20 % Puffer für den offenen Punkt „SignerUtil.verifyPOP EC-Support“ und Umgebungsüberraschungen: ca. 8 – 11 PT.

6. Risiken & offene Punkte