Assured Open Source Software bietet Ihnen Pakete, Paketmetadaten und Dienstprogrammskripts. Jedes Assured OSS-Paket wird mit einem separaten von Google ausgestellten Zertifikat signiert, das den ECDSA P256-Algorithmus für die Schlüsselgenerierung verwendet. Jede Paketmetadaten und jedes Utility-Script werden außerdem mit einem von Google ausgestellten Zertifikat signiert, das den ECDSA-P256-Algorithmus für die Schlüsselgenerierung verwendet. Diese Zertifikate werden mit dem Certificate Authority Service ausgestellt und das entsprechende öffentliche Root-Zertifikat ist in einem Cloud Storage-Bucket verfügbar.
Dieses Dokument bezieht sich auf die kostenlose Stufe. Informationen zu Signaturen im Premium-Tarif finden Sie unter Sicherheitsmetadaten aufrufen und Pakete überprüfen.
Übersicht über Signaturen
Signaturen werden in einer signature.zip-Datei gespeichert. Die Datei signature.zip enthält die folgenden Dateien:
digest.txt: In dieser Datei werden der Hash-Algorithmus und der Paket-Digest im hexadezimal codierten Format gespeichert. Sehen Sie sich folgendes Beispiel an:SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.signature.txt: In dieser Datei werden der Signaturalgorithmus und die hexadezimal codierte Signatur gespeichert. Sehen Sie sich folgendes Beispiel an:ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`cert.pem: In dieser Datei wird das öffentliche Zertifikat gespeichert.certChain.pem: In dieser Datei wird die Zertifikatskette für das öffentliche Zertifikat gespeichert.
Überprüfung von Signaturen
Sie können Signaturen mit einer der folgenden Methoden überprüfen:
- aoss-verifier-Tool
- manuell
- Bestätigungsscript
Signaturen mit dem aoss-verifier-Tool prüfen
Um die Authentizität und Integrität von Open-Source-Softwarepaketen zu prüfen, installieren Sie das Tool aoss-verifier.
Um ein Paket zu überprüfen, übergeben Sie die Werte LANGUAGE, PACKAGE_ID und VERSION sowie die PATH_TO_DATA_FILE, die Sie überprüfen möchten, mit den Flags
--language,--package_id,--versionund--artifact_path.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATHErsetzen Sie Folgendes:
- LANGUAGE: Die Sprache des Pakets. Der Wert muss in Kleinbuchstaben geschrieben werden.
- PACKAGE_ID: Für Java ist das Format groupId:artifactId. Für Python lautet das Format packageName. Der Wert muss in Kleinbuchstaben geschrieben werden.
- VERSION: Die Version des Pakets.
- ARTIFACT_PATH: Der Pfad zur Datendatei in Ihrem lokalen Verzeichnis, die Sie überprüfen möchten. Verwenden Sie die folgenden Dateinamenerweiterungen:
jar-Dateiendung für ein Java-Paketwhl-Dateiendung für ein Python-Paket
Signaturen manuell überprüfen
So überprüfen Sie die Signaturen manuell:
Installieren Sie die Google Cloud CLI und die OpenSSL-Software, Version 3.0.1 oder höher.
Prüfen Sie den Digest.
Hash-Algorithmus ermitteln Die Datei
digest.txtenthält den Hashing-Algorithmus, der zum Berechnen des Digests verwendet wird. Ermitteln Sie den Hashing-Algorithmus mit dem folgenden Befehl:cut -d ':' -f1 digest.txtPrüfen Sie, ob die Ausgabe
SHA256ist.Berechnen Sie den Digest der Datendatei. Sie können den Digest der Datendatei mit verschiedenen Befehlszeilentools berechnen, je nachdem, welcher Hash-Algorithmus verwendet wird. Verwenden Sie für garantierte OSS-Datendateien und ‑Skripts den SHA-256-Hashalgorithmus, um den Digest zu generieren.
Verwenden Sie unter Linux den folgenden Befehl, um den Hash zu berechnen:
sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtErsetzen Sie für die Paketüberprüfung PATH_TO_DATA_FILE durch den Pfad zum Paket in Ihrem lokalen Verzeichnis.
Ersetzen Sie für die Metadatenbestätigung PATH_TO_DATA_FILE durch den Namen der Metadatendatei. Beispiel:
buildInfo.json,vexInfo.jsonoderhealthInfo.json.Verwenden Sie unter macOS den folgenden Befehl:
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtExtrahieren Sie den Hash aus der Datei
digest.txtmit dem folgenden Befehl:cut -d ':' -f2 digest.txt > signaturedigest.txtVergleichen Sie die beiden Digests mit dem folgenden Befehl:
diff datadigest.txt signaturedigest.txtWenn es keinen Unterschied gibt, erfolgt keine Ausgabe.
Überprüfen Sie die Signatur
Rufen Sie mit dem folgenden Befehl einen öffentlichen Schlüssel von
cert.pemab:openssl x509 -pubkey -noout -in cert.pem > pubkey.pemExtrahieren Sie die Signatur im Binärformat mit dem folgenden Befehl (installieren Sie den
xxd-Befehl, falls er nicht vorhanden ist):cut -d ':' -f2 signature.txt | xxd -r -p > sig.sigExtrahieren Sie den Digest im Binärformat mit dem folgenden Befehl:
cut -d ':' -f2 digest.txt | xxd -r -p > digest.binPrüfen Sie die Signatur mit einem der folgenden Befehle:
Option 1
openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sigDer Befehl gibt die folgende Ausgabe zurück:
Signature Verified SuccessfullyOption 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILEErsetzen Sie PATH_TO_DATA_FILE durch den Pfad zur Datendatei in Ihrem lokalen Verzeichnis.
Der Befehl gibt die folgende Ausgabe zurück:
Verified OK
Zertifikat überprüfen
Führen Sie den folgenden Befehl aus, um das Zertifikat zu überprüfen:
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemca.certist das Root-Zertifikat, das mit diesem Befehl heruntergeladen werden kann:curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtBei Erfolg wird die folgende Ausgabe zurückgegeben:
cert.pem: OK
Signaturen mit einem Skript überprüfen
So verwenden Sie ein Bestätigungsskript zum Bestätigen von Signaturen:
Laden Sie das Bestätigungsskript herunter.
Laden Sie die Dateien
signatureverification.sh,README.mdundsignature.zipfür das Bestätigungsskript mit dem folgenden Befehl herunter:gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursiveErsetzen Sie PATH_TO_LOCAL_STORE durch den lokalen Pfad, in den Sie die Datei herunterladen möchten.
Sie können auch die Überprüfung von Utility-Skripts mit dem Überprüfungsskript durchführen.
Führen Sie das Skript so aus:
Installieren Sie die Google Cloud CLI und die OpenSSL-Software, Version 3.0.1 oder höher.
Authentifizieren Sie sich mit dem Dienstkonto, das die Berechtigung zum Zugriff auf Assured OSS hat.
Gewähren Sie die erforderlichen Berechtigungen zum Ausführen des Skripts mit dem folgenden Befehl:
chmod +x signatureverification.shFühren Sie das Skript mit dem folgenden Befehl aus, wenn Sie die Datei
signature.zipnicht heruntergeladen haben:./signatureverification.sh --data_file_path PATH_TO_DATA_FILE \ --signature_url SIGNATURE_ZIP_URL \ --root_cert_url ROOT_CERT_URLErsetzen Sie Folgendes:
- PATH_TO_DATA_FILE: der Pfad zur Datendatei in Ihrem lokalen Verzeichnis, die Sie überprüfen möchten
- SIGNATURE_ZIP_URL: die URL der ZIP-Datei mit der Signatur
- ROOT_CERT_URL: die öffentliche Root-Zertifikats-URL
Beispielausgabe
Die folgende Ausgabe zeigt an, dass das Überprüfungsskript erfolgreich ausgeführt wurde.
Signature verification successful
Certificate verification successful