Umstellung notwendig: Änderungen am SOAP-API

Einige Anwender der DFN-PKI nutzen die SOAP-API (https://blog.pki.dfn.de/tag/soapclient-releases/) zur Entwicklung von eigenen Systemen. An diesen Eigenentwicklungen müssen nun bis spätestens November 2021 Anpassungen vorgenommen werden, um die folgenden Änderungen umzusetzen.

Nicht betroffen sind Anwender, die ausschließlich die Java RA-Oberfläche und die Web-Antragsseiten nutzen.

Änderungen bei newRequest()

Der Subject-DN im PKCS#10-Request, der bei newRequest() übergeben wird, muss für Nutzer-und Pseudonymzertifikat anders aufgebaut werden.

Für Nutzerzertifikate: Es müssen zusätzliche DN-Attributen SN (surname, Nachname) und GN (givenName, Vorname) übergeben werden. Beispiel:

CN=Martha Musterfrau,GN=Martha,SN=Musterfrau,O=Musterorganisation,L=Musterstadt,ST=Musterbundesland,C=DE

Anträge für Nutzerzertifikate ohne CN, GN und SN werden an November 2021 nicht mehr angenommen.

Für Pseudonymzertifikate: Es muss ein zusätzliches DN-Attribut pseudonym übergeben werden. Der Wert soll wie der CN sein, aber ohne das führende „PN:“ oder „PN – „. Beispiel:

CN=PN: Mein Pseudonym,pseudonym=Mein Pseudoynm,O=Musterorganisation,L=Musterstadt,ST=Musterbundesland,C=DE

Anträge ohne CN und pseudonym, wenn der CN mit „PN:“ oder „PN – “ beginnt, werden ab November 2021 nicht mehr angenommen.

Für Gruppenzertifikate (Kennzeichnung „GRP:“ bzw. „GRP – „) und Serverzertifikate ändert sich nichts.

Selbstverständlich müssen die neuen Regeln auch bei der Verwendung von setRequestParameters() bzw. setExtendedRequestParameters() beachtet werden.

Optionale Übergabe des Subject-DN als separatem Parameter

Als weitere Änderung kann newRequest() optional auch zusätzlich der Subject-DN übergeben
werden. Dieser Wert überschreibt dann den Subject-DN aus dem übergebenen PKCS#10-Request.

Änderungen bei newRevocationRequest()

Der Parameter Reason in newRevocationRequest() darf in Zukunft nur noch die Werte
1, 3, 4 oder 5 annehmen. Die Bedeutung:

1, keyCompromise: Dieser Sperrgrund signalisiert, dass der zum Zertifikat
gehörende geheime Schlüssel kompromittiert (offengelegt) wurde oder
andere Aspekte der durch den Zertifikatnamen (SubjectDN) beschriebenen
Entität kompromittiert wurden.

3, affiliationChanged: Dieser Sperrgrund signalisiert, dass der Zertifikatname
(SubjectDN) oder andere Informationen im Zertifikat nicht mehr den
aktuellen Tatsachen entsprechen, etwa weil sich Namen,
E-Mail-Adressen, Funktionsrollen oder Zugehörigkeiten geändert haben,
dass aber gleichzeitig kein Grund für einen Verdacht besteht, dass der
zum Zertifikat gehörende geheime Schlüssel kompromittiert wurde.

4, superseded: Dieser Sperrgrund signalisiert, dass das Zertifikat von
einem neueren Zertifikat abgelöst wurde, dass aber gleichzeitig kein
Grund für einen Verdacht besteht, dass der zum zu sperrenden
Zertifikat gehörende geheime Schlüssel kompromittiert wurde.

5, cessationOfOperation: Dieser Sperrgrund signalisiert, dass das Zertifikat
nicht länger für die Zwecke eingesetzt wird, für die es ausgestellt
wurde, dass aber gleichzeitig kein Grund für einen Verdacht besteht,
dass der zum Zertifikat gehörende geheime Schlüssel kompromittiert
wurde.

Im soapclient gibt es hierfür die folgende neue Methode:

DFNCERTPublic.newRevocationRequest(int RaID,
BigInteger Serial, de.dfncert.enums.RevocationReason Reason, String Pin)

bzw.

DFNCERTRegistration.newRevocationRequest(BigInteger Serial, de.dfncert.enums.RevocationReason Reason)

Die Sperrgründe werden als de.dfncert.enums.RevocationReason übergeben:

RevocationReason.KEY_COMPROMISE
RevocationReason.AFFILIATION_CHANGED
RevocationReason.SUPERSEDED
RevocationReason.CESSATION_OF_OPERATION

Diese eingeschränkten Sperrgründe müssen auch bei einem Aufruf von setRevocationInfo() berücksichtigt werden.

Zeitplanung

Die aktuelle Schnittstelle (Stand Februar 2021) ist noch voll abwärts-kompatibel. Ab November 2021 wird allerdings die Verwendung der neuen DN-Parameter in newRequest(), setRequestParamaters() und setExtendedRequestParameters() und der neuen Sperrgründe in newRevocationRequest() und setRevocationInfo() verpflichtend.

 

(Jürgen Brauckmann, 18.2.2021)