ASN1-Struktur-Zulassungssyntax

540
Opa114

Ich möchte die Zugangserweiterung meinem Zertifikat hinzufügen. Dazu verwende ich das Tool XCA, das OpenSSL zur Erstellung der Zertifikate verwendet.

Dies ist meine Struktur, die ich mit einigen Dummy-Daten geschrieben habe:

1.3.36.8.3.3=ASN1:SEQUENCE:seq_sect  [seq_sect] admissionAuthority=IMPLICIT:1,IA5STRING:MyGeneralName contentsOfAdmissions=SEQUENCE:admissions_sect  [admissions_sect] admissionAuthority=EXPLICIT:0,IMPLICIT:1,IA5STRING:MyGeneralNameAdmission namingAuthority=EXPLICIT:1,SEQUENCE:namingAuthorithy_sect professionInfos=SEQUENCE:professionInfo_sect  [professionInfo_sect] namingAuthority=EXPLICIT:0,SEQUENCE:namingAuthorithy_sect professionItems=UTF8String:String1,UTF8String:String2 professionOIDs=SEQUENCE:oid_sect registrationNumber=PRINTABLESTRING:registrationNumber addProfessionInfo=OCTETSTRING:ProffessionInfo  [oid_sect] one=OID:1.2.3.4 two=OID:1.2.3.5  [namingAuthorithy_sect] namingAuthorityId=OID:1.2.3.4 namingAuthorityUrl=IA5STRING:http://www.url.de namingAuthorithyText=UTF8String:namingAuthorityTEXT 

Das ist aber nicht richtig. Erster Fehler, den ich hier bekam:

admissionAuthority=EXPLICIT:0, IMPLICIT:1,IA5STRING:MyGeneralNameAdmission 

Da stimmte das Tagging nicht überein. Weiß aber nicht warum. In der Definition der Admission-Syntax muss ich es EPLICIT markieren, aber der GERNERALNAME muss mit IMPLICIT gekennzeichnet sein, aber ich habe einen Fehler erhalten. also wo ist das problem?

Der nächste Fehler ist hier:

professionItems=UTF8String:String1,UTF8String:String2 

PROFESSIONITEM ist eine Abfolge von DIRECTORYSTRING, aber als ich das Zertifikat mit BouncyCastle in Java las, bekam ich DERUTF8STRING Exception, also muss hier ein Fehler von mir sein, vielleicht habe ich es falsch definiert? hoffe jemand kann helfen.

1
Haben Sie ein Beispiel für ein gültiges Zertifikat? grawity vor 8 Jahren 0
nein :( wenn jemand eine hat, wäre es schön :) Opa114 vor 8 Jahren 0

1 Antwort auf die Frage

0
grawity

Sie können die erzeugte Struktur mit Werkzeugen wie dumpasn1oder anzeigen openssl asn1parse -i.


Ich habe versucht, eine Beispielstruktur mit dem Schema und einem tatsächlichen ASN.1-Compiler zu erstellen .

  • Ich denke, der AdmissionAuthority muss nur für das explizite Tagging konfiguriert werden. (Ich habe nicht die geringste Ahnung von Tags.

    admissionAuthority = EXPLICIT:1, IA5STRING:MyGeneralName 

    Welche scheint mit der Compilerausgabe übereinzustimmen.

  • OpenSSLs "UTF8String:" reicht bis zum Zeilenende. Sie haben also ein professionItem mit dem Wert " String1,UTF8String:String2".

    Mehrere Werte können folgendermaßen definiert werden:

    professionItems.0 = UTF8String:String1 professionItems.1 = UTF8String:String2 

    Da sie sich jedoch innerhalb einer SEQUENCE befinden müssen, benötigen Sie wieder einen separaten Abschnitt:

    professionItems = SEQUENCE:item_sect  [item_sect] 0 = UTF8String:String1 1 = UTF8String:String2 
  • ProfessionItems muss jedoch eine Sequenz von professionInfo SEQs sein. Für einen SEQ von nur einem Element ist die einfachste Option:

    professionItems = SEQWRAP, SEQUENCE:item_sect 

    Wenn Sie mehrere Artikel benötigen, müssen Sie einen anderen Abschnitt verwenden:

    professionItems = SEQUENCE:prof_items_sect  [prof_items_sect] 0 = SEQUENCE:item0_sect 1 = SEQUENCE:item1_sect ... 

Ich habe Ihr Beispiel erfolgreich in Kommentaren mit:

[seq_sect]  # GeneralName-Tag [4] ist verzeichnisname  #admissionAuthority = EXPLICIT: 1, IA5STRING: whatever@example.com  #admissionAuthority = EXPLICIT: 2, IA5STRING: example.com admissionAuthority = EXPLICIT: 4, SEQUENCE: Authority_Name_sect #admissionAuthority = EXPLICIT: 6, IA5STRING: https: //www.example.com/ # Dies könnte ein "SEQWRAP, SEQUENCE: admission0_sect" sein. # solange es nur einen Eintrittsartikel gibt contentsOfAdmissions = SEQUENCE: admissions_sect  [authority_name_sect]  # Dies ist ein Name, der auch als RDNSequence bezeichnet wird.  # Jeder RelativeDistinguishedName hat im Allgemeinen nur ein AttributeTypeAndValue  # (mehrere Male in LDAP, aber selten), daher erledigt SETWRAP hier die Aufgabe rdn.1 = SETWRAP, SEQUENCE: authority_dn_C_sect rdn.2 = SETWRAP, SEQUENCE: authority_dn_O_sect rdn.3 = SETWRAP, SEQUENCE: authority_dn_postal_sect  [authority_dn_C_sect] OID = OID: 2.5.4.6 value = PRINTABLESTRING: DE  [authority_dn_O_sect] oid = OID: 2.5.4.10 Wert = UTF8String: Firma A  [authority_dn_postal_sect] OID = OID: 2.5.4.16 value = SEQUENCE: authority_dn_postal_values  [authority_dn_postal_values] 0 = UTF8String: Straße 1 = UTF8String: PostalCode-Adresse 2 = UTF8String: DE  [admissions_sect] admission.0 = SEQUENCE: admission0_sect  [admission0_sect] professionInfos = Sequenz: professionInfos_sect  [professionInfos_sect] professionInfo.0 = SEQUENCE: professionInfo0_sect  [professionInfo0_sect]  # namingAuthority = ... professionItems = SEQUENCE: professionItems_sect # professionOIDs = ...  [professionItems_sect] professionItem.0 = UTF8String: Arzt / Ärztin 
Ich habe es versucht, aber die gleiche Fehlermeldung, wenn ich es mit BouncyCastle in Java parse. Es muss mit dem UTF8String in professionellen Bereichen zu tun werden. Opa114 vor 8 Jahren 0
Okay, versuchen Sie, das Hex-Zeug in eine Binärdatei zu konvertieren, und geben Sie es an asn1parse oder dumpasn1 weiter. Vergleichen Sie mit Ihren eigenen Zertifikaten. grawity vor 8 Jahren 0
Ja, ich weiß und ich habe das getan, aber ich sehe keinen Unterschied zwischen dieser und meiner obigen Version. Hast du den Unterschied gesehen? Opa114 vor 8 Jahren 0
Hmm, ich habe Probleme, sogar wenn dumpasn1 es interpretiert. Aber selbst aus diesem Grund scheint es dem Ergebnis von `admissionAuthority = EXPLICIT: 4, SEQUENCE: name_sect` zu entsprechen, ohne dass zusätzliche Markierungen vorgenommen werden. Das explizite Tag kennzeichnet die GeneralName-Variante (in diesem Fall ein Verzeichnisname), das ist alles. grawity vor 8 Jahren 0
Ich werde morgen einen tieferen Blick darauf werfen und berichten. Vielen Dank! Opa114 vor 8 Jahren 0
Ah, hab es endlich bekommen (unsichtbarer Unicode stört). Siehe Update zum Posten. Der Stapel von fünf verschachtelten SEQUENCEs, der nachher passiert, liegt immer noch außerhalb meines Verständnisses. AdmissionSyntax geht gar nicht so tief. grawity vor 8 Jahren 0
Okay, endlich hat es herausgefunden. ✔ grawity vor 8 Jahren 0
das hat wie erwartet funktioniert. Danke vielmals!! Mit dem letzten aktualisierten Code sehe ich, wo meine Fehler liegen. Opa114 vor 8 Jahren 0