在 Assured OSS 免費方案中驗證簽章

本頁說明如何驗證 Assured OSS 構件的簽章。

本頁面僅適用於免費層級。如為進階層級,請參閱「存取安全性中繼資料並驗證套件」。

套件驗證

套件簽章會以 zip 格式儲存在 Cloud Storage bucket 中,與套件分開儲存。您可以使用 Assured OSS 驗證工具 (aoss-verifier) 或驗證指令碼驗證簽章。

使用 aoss-verifier 工具

使用這項工具前,請確認系統已安裝 Go。如果尚未安裝 Go,請前往 Go 網站安裝。

  1. 如要驗證開放原始碼軟體套件的真實性和完整性,請安裝 aoss-verifier 工具。

  2. 匯出 $(go env GOPATH)/bin,然後執行 aoss-verifier verify-package 指令。

    aoss-verifier verify-package \
       --language LANGUAGE \
       --package_id PACKAGE_ID \
       --version VERSION \
       --artifact_path ARTIFACT_PATH \
       [--disable_certificate_verification] \
       [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \
       [--disable_deletes]
    

    更改下列內容:

    • LANGUAGE:程式設計套件語言,可以是 javapython。值必須為小寫。
    • PACKAGE_ID:Java 為 groupId:artifactId,Python 為 packageName。值必須為小寫。
    • VERSION:套件版本。
    • ARTIFACT_PATH:要驗證的本機目錄中資料檔案路徑。請使用下列副檔名:
      • Java 套件的 jar 副檔名
      • Python 套件的 whl 副檔名

    --disable_certificate_verification 是選用標記,如果使用,會略過透過憑證鏈結將分葉憑證與根憑證相符的程序。

    --temp_downloads_path 是選用旗標,可用於設定要下載檔案的路徑。(取代 TEMP_DOWNLOADS_DIR_PATH)。如果未設定這個旗標,檔案會下載至目前目錄中的 tmp_downloads 資料夾。

    --disable_deletes 是選用旗標,可保留下載的檔案。根據預設,這項工具會清除所有已下載的檔案。

詳情請參閱 README

使用驗證指令碼

本節說明如何使用驗證指令碼,驗證下載套件的簽章。

步驟 1:取得簽章網址

每個套件的安全中繼資料中,都會提供 ZIP 檔案的網址。以下是「容器分析中繼資料」的範例。

如下列範例所示,您可以在 description: digestUrl 欄位中找到簽章 zip 網址。

package {
  distribution {
    cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
    maintainer: "<nil>"
    url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar"
    description: "{\n \"artifactMetadataList\": [\n {\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3_binary_2022-10-12T06:54:05Z.zip\"\n }\n ]\n}"
  }
  distribution {
    cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
    url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3-sources.jar"
    description: "{\n  \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3-sources_source_2022-10-12T06:54:05Z.zip\"\n}"
  }
}

Cloud Storage 中繼資料的範例 (buildInfo.json file)。如下列範例所示,您可以從 externalRefs : referenceLocator 欄位取得簽章 ZIP 網址。

"packages": [
        {
            "SPDXID": "SPDXRef-Package-logback-core-1.2.11.jar",
            "checksums": [
                {
                    "algorithm": "SHA256",
                    "checksumValue": "c847e0e310acda8bc1347c9d9cc051e91210b9f943e131fceb5034c2f0c9a5d8"
                }
            ],
            "downloadLocation": "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar",
            "externalRefs": [
                {
                    "referenceCategory": "SECURITY",
                    "referenceLocator": "cpe:2.3:a:*:JAVA\\:\\:ch\\.qos\\.logback\\:logback\\-core:1\\.2\\.11:*:*:*:*:*:*:*",
                    "referenceType": "cpe23Type"
                },
                {
                    "referenceCategory": "OTHER",
                    "referenceLocator": "gs://cloud-aoss/java/ch.qos.logback:logback-core/1.2.11/logback-core-1.2.11_binary_2022-10-12T14:19:11Z.zip",
                    "referenceType": "digestURL"
                }
            ],

您可以手動驗證本機簽章 ZIP 檔案,或直接使用 Cloud Storage 網址來執行驗證指令碼。如要下載 signature.zip 檔案,請按照下列步驟操作:

  1. 使用應用程式預設憑證 (ADC) 設定驗證

  2. 使用下列指令下載 signature.zip

      gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursive
    

    更改下列內容:

    • SIGNATURE_ZIP_URL:簽章 ZIP 網址。
    • PATH_TO_LOCAL_STORE:要下載檔案的本機路徑。

步驟 2:取得根憑證

如要存取根憑證,請使用下列網址:

https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

您可以將憑證下載到本機,也可以直接使用憑證連結。 如要下載憑證,請執行下列指令:

curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

PATH_TO_LOCAL_STORE 替換為要下載憑證的本機路徑。

步驟 3:取得套件檔案位置

我們會驗證 Java 套件的 JAR 檔案,以及 Python 套件的 Wheel 檔案。該檔案會是驗證用的 PATH_TO_DATA_FILE

步驟 4:驗證

您可以按照「手動驗證簽名」一文中的步驟手動驗證簽名 ZIP 檔,也可以使用驗證指令碼

如要使用驗證指令碼進行驗證,請執行下列指令:

  1. 下載驗證指令碼並授予權限。

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. 執行驗證指令碼並驗證。簽章 ZIP 檔案和根憑證可以使用遠端網址或本機路徑。

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url SIGNATURE_ZIP_URL --root_cert_url ROOT_CERT_URL
    

    更改下列內容:

    • PATH_TO_DATA_FILE,並提供步驟 3 中識別的套件檔案路徑
    • SIGNATURE_ZIP_URL,並換成您在步驟 1 取得的簽章 ZIP 網址。
    • ROOT_CERT_URL,並使用步驟 2 中取得的根憑證網址。

中繼資料驗證

本節說明如何驗證使用 Cloud Storage 存取的 Assured OSS 中繼資料簽章。

使用 aoss-verifier 工具

使用 aoss-verifier 工具驗證中繼資料。

使用這項工具前,請先安裝 Go

  1. 安裝 aoss-verifier 工具。

  2. 匯出 $(go env GOPATH)/bin,然後執行 aoss-verifier verify-metadata 指令。

    aoss-verifier verify-metadata \
       --metadata_type TYPE \
       --language LANGUAGE \
       --package_id PACKAGE_ID \
       --version VERSION \
       [--disable_certificate_verification] \
       [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \
       [--disable_deletes]
    

    更改下列內容:

    • TYPE:可能的值為 buildinfovexinfohealthinfo
    • LANGUAGE:程式設計套件語言,可以是 javapython。值必須為小寫。
    • PACKAGE_ID:如果是 Java,格式為 groupId:artifactId。如果是 Python,格式為 packageName。值必須為小寫。
    • VERSION:套件版本。

    --disable_certificate_verification 是選填的標記,如果使用,系統會略過透過憑證鏈結將分葉憑證與根憑證相符的程序。

    --temp_downloads_path 是選用旗標,可設定要下載檔案的路徑 (請替換 TEMP_DOWNLOADS_DIR_PATH)。如果未設定這個旗標,檔案會下載至目前目錄中的 tmp_downloads 資料夾。

    --disable_deletes 是選用旗標,可保留下載的檔案。根據預設,這項工具會清除所有已下載的檔案。

詳情請參閱 README

使用驗證指令碼

本節說明如何使用驗證指令碼驗證安全性中繼資料檔案。

步驟 1:取得簽章 ZIP 檔案和中繼資料檔案

我們可以如「存取中繼資料」一節所述存取中繼資料。中繼資料檔案會與 signature.zip 檔案一起提供。

範例 - buildInfo.zip 的內容

buildInfo.json
signature.zip

buildInfo.json 是需要驗證的中繼資料檔案,signature.zip 則是簽章 ZIP 檔。

步驟 2:取得根憑證

請使用下列網址連結取得根憑證:

https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

您可以將憑證下載到本機,也可以直接使用憑證連結。 如要下載憑證,請執行下列指令:

curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

PATH_TO_LOCAL_STORE 替換為要下載憑證的本機路徑。

步驟 3:驗證

您可以手動驗證 signature.zip,也可以使用驗證指令碼

如要使用驗證指令碼進行驗證,請執行下列指令:

  1. 下載驗證指令碼並授予權限。

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. 執行驗證指令碼並驗證。簽章 ZIP 檔應使用本機路徑。根憑證可以使用網址或本機路徑。資料檔案是我們要驗證的中繼資料檔案 - buildInfo.jsonvexInfo.jsonhealthInfo.json

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URL
    

    更改下列內容:

    • PATH_TO_DATA_FILE,並附上我們在步驟 1 驗證的中繼資料檔案。

    • SIGNATURE_LOCAL_PATH,並換成您在步驟 1 取得的簽章 ZIP 網址。

    • ROOT_CERT_URL,並在步驟 2 中取得根憑證網址。

      如要使用已下載的本機憑證,請改用這個選項:

      --root_cert_local ROOT_CERT_LOCAL
      

      ROOT_CERT_LOCAL 替換為本機憑證路徑。

驗證公用程式指令碼

Assured OSS 提供三種公用程式指令碼。本節將說明如何驗證這些指令碼的簽章。

Python Requirements.txt 生成器

如要存取這個檔案的簽章,請前往 gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip。您可以signature.zip手動驗證,或使用驗證指令碼。 如要使用驗證指令碼快速驗證簽章,請按照下列步驟操作:

  1. 設定驗證方法

  2. 如果尚未下載 requirements.txt 產生器指令碼檔案,請下載該檔案。

     gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive
    
  3. 擷取根憑證。網址連結為 https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt 您可以下載憑證到本機,或直接使用憑證連結。 如要下載憑證,請執行下列指令:

    curl -o PATH_TO_LOCAL_STORE/ca.crt "https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt"
    

    PATH_TO_LOCAL_STORE 替換為要下載憑證的本機路徑

  4. 如果尚未下載驗證指令碼,請立即下載。

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. 執行驗證指令碼並驗證。

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URL
    

    更改下列內容:

    • PATH_TO_DATA_FILE,並提供我們要在步驟 2 中驗證的指令碼本機路徑。generator.sh
    • ROOT_CERT_URL,並提供根憑證網址。如要使用已下載的本機憑證,請執行下列指令:
    –root_cert_local ROOT_CERT_LOCAL
    

    ROOT_CERT_LOCAL 替換為根憑證的本機路徑。

簽章驗證指令碼

如要查看這個檔案的簽章,請前往 gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip。您可以signature.zip手動驗證,或使用驗證指令碼。 如要使用驗證指令碼快速驗證簽章,請按照下列步驟操作:

  1. 設定驗證方法

  2. 如果尚未下載簽章驗證指令碼檔案,請下載該檔案。

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  3. 擷取根憑證。網址連結為 https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt 您可以下載憑證到本機,或直接使用憑證連結。 下載憑證的指令:

    curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
    

    PATH_TO_LOCAL_STORE 替換為要下載憑證的本機路徑

  4. 執行驗證指令碼並驗證。

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip" --root_cert_url ROOT_CERT_URL
    

    更改下列內容:

    PATH_TO_DATA_FILE,並在步驟 2 中取得要驗證的驗證指令碼本機路徑。 ROOT_CERT_URL,並提供根憑證網址。如要使用已下載的本機憑證,請改用這個選項:

    –root_cert_local ROOT_CERT_LOCAL
    

    ROOT_CERT_LOCAL 替換為根憑證的本機路徑。

下載中繼資料指令碼

如要查看這個檔案的簽章,請前往 gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip。您可以signature.zip手動驗證,或使用驗證指令碼。 如要使用驗證指令碼快速驗證簽章,請按照下列步驟操作:

  1. 設定驗證方法

  2. 如果尚未下載 download_metadata.py 指令碼檔案,請下載該檔案。

    gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive
    
  3. 擷取根憑證。網址連結為 https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt 您可以下載憑證到本機,或直接使用憑證連結。

    如要下載憑證,請執行下列指令:

    curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
    

    PATH_TO_LOCAL_STORE 替換為要下載憑證的本機路徑

  4. 下載驗證指令碼。

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. 執行驗證指令碼並驗證。

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URL
    

    更改下列內容:

    • PATH_TO_DATA_FILE,並提供我們要在步驟 2 中驗證的指令碼本機路徑。download_metadata.py
    • ROOT_CERT_URL,並提供根憑證網址。如要使用已下載的本機憑證,請執行下列指令:
    –root_cert_local ROOT_CERT_LOCAL
    

    ROOT_CERT_LOCAL 替換為根憑證的本機路徑。

後續步驟