Wurzel- und Zwischenzertifikate der zugelassenen Zertifizierungsstellen Russlands

    Wie in vielen anderen Ländern verwendet Russland für offizielle elektronische Weitergabe von Dokumenten x509-Zertifikate, die von autorisierten russischen Zertifizierungsstellen (CAs) ausgestellt wurden. Und im Gegensatz zu vielen anderen Ländern verwendet es eigene Chiffren.

    Ich wollte schon lange die Überprüfung der Unterschriften der Antworten der Behörden (ich korrespondiere häufig) und die Überprüfung der "Entladungen" von Roscomnadzor auf Authentizität (durch die Art der sozialen Aktivität) automatisieren. Das größte Problem bestand darin, Zwischenzertifikate aus der Kette zu bekommen. Weil es eine vage Excel-Root-CA-Datei auf der Website des Ministeriums für Kommunikation und alles gab. Die intermediären sollten auf den Websites der entsprechenden Zertifizierungsstellen gesucht werden. Das Leben ist Schmerz.
    Was ist ein „Zwischenzertifikat“ . Ich möchte Sie daran erinnern, wie es funktioniert. Angenommen, wir möchten einen unterschriebenen Brief prüfen. Der Brief ist mit einem Schlüssel signiert. Es gibt ein Zertifikat, das diesen Schlüssel zertifiziert. Das Zertifikat wurde von jemandem ausgestellt und von einem Schlüssel mit dem beigefügten Zertifikat signiert. Und dieses Zertifikat ist genau das gleiche. Und so weiter bis zu dem Moment, wenn das Zertifikat für sich selbst ausgestellt wird. Bei der Überprüfung haben wir einen bestimmten Satz dieser endgültigen Zertifikate mitgebracht (aus dem Paket geliefert, die wir auf einem Flash-Laufwerk erhalten haben). Wir glauben, weil wir dem glauben, der sie uns gegeben hat. In der Web-Welt vertrauen wir dem Browser und den zugehörigen Stammzertifikaten. In der Welt des Webs werden bei der Verbindung über HTTPS auch Zwischenzertifikate vom Server an den Client übertragen. Daher haben wir in der Welt des Webs immer die gesamte Kette.
    Plötzlich (ich weiß nicht genau wann) und unmerklich erschien ein Link auf der State Services-Website:
    e-trust.gosuslugi.ru/CA

    Ich habe schnell ein Programm geschrieben , das die XML-Datei mit der Liste der CAs und Zertifikate dieser Site in das übliche PEM-Format umwandelt.

    Dann automatisierte ich es und erhielt ein ständig gewartetes Zertifikats-Repository in einer Form, die der * NIX-Welt vertraut ist.

    GOST-Verschlüsselung


    GOST-Verschlüsselung wird in LibreSSL unterstützt. Ich weiß nicht mehr, von welcher Version. Aber in Alpine Linux von 3.5 wird bereits unterstützt. OpenSSL ist komplizierter. Die GOST-Verschlüsselung wird mit OpenSSL von Version 1.0.0 bis einschließlich Version 1.0.2 geliefert. In CentOS gibt es beispielsweise keine GOST-Verschlüsselung. CentOS-Benutzer müssen leiden. Für Debian, Mint, Ubuntu mit OpenSSL Version 1.1.0 und höher müssen Sie das Paket libengine-gost-openssl1.1 installieren, das von Crypto-Enthusiasten Vartan Hachaturov unterstützt wird (übrigens können Sie ihm helfen).

    Nun, im Jahr 2018 haben wir einen Docker, und wie ich schon erwähnte, funktioniert bei Alpine Linux alles.

    Wie man es benutzt


    Kurze Beispiele zur Überprüfung des Entladens von Roskomnadzor mit entfernter Signatur. Die Entladedatei ist dump.xml, die getrennte Signatur ist dump.xml.sig. Selbst ich hatte sie vorher nur auf die Unversehrtheit der Signatur geprüft, nicht aber auf die Einhaltung der Quelle.

    OpenSSL verwenden:

    git clone https://github.com/schors/gost-russian-ca.git ./
    openssl smime -verify -engine gost \
            -CAfile gost-russian-ca.git/certs/ca-certificates.pem \
            -in dump.xml.sig -inform DER -content dump.xml  -out /dev/null

    LibreSSL verwenden:

    git clone https://github.com/schors/gost-russian-ca.git ./
    openssl smime -verify -CAfile gost-russian-ca.git/certs/ca-certificates.pem \
            -in dump.xml.sig -inform DER -content dump.xml  -out /dev/null

    Natürlich können Sie auch das Dienstprogramm c_rehash im Ordner certs verwenden und dann die Option -CAdir anstelle von -CAfile verwenden.

    Und ab diesem Zeitpunkt können Sie die Website von Gosuslug, Kontur und fremden Programmen wie CryptoPro nicht für eine einfache Signaturüberprüfung verwenden. Und vor allem ist es jetzt möglich, zu automatisieren.

    Jetzt auch beliebt: