本页面介绍了如何验证 Assured OSS 制品的签名。
本页面仅适用于免费层级。对于高级层级,请参阅访问安全元数据并验证软件包。
包裹验证
软件包签名以 ZIP 格式存储在 Cloud Storage 存储桶中,与软件包分开存储。
您可以使用 Assured OSS 验证程序工具 (aoss-verifier) 或验证脚本来验证签名。
使用 aoss-verifier 工具
在使用此工具之前,请确保您的系统上已安装 Go。如果未安装 Go,请从 Go 网站安装 Go。
如需验证开源软件包的真实性和完整性,请安装 aoss-verifier 工具。
导出
$(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:编程软件包语言,
java或python。值必须采用小写字母。 - PACKAGE_ID:对于 Java,它是 groupId:artifactId;对于 Python,它是 packageName。值必须采用小写字母。
- VERSION:软件包的版本。
- ARTIFACT_PATH:您要验证的本地目录中的数据文件的路径。使用以下文件扩展名:
- Java 软件包的
jar文件扩展名 - Python 软件包的
whl文件扩展名
- Java 软件包的
--disable_certificate_verification是一个可选标志,如果使用,则会跳过通过证书链将叶证书与根证书进行匹配。--temp_downloads_path是一个可选标志,用于设置您要下载文件的路径。(将 TEMP_DOWNLOADS_DIR_PATH 替换为实际路径)。如果未设置此标志,则文件会下载到当前目录中的tmp_downloads文件夹。--disable_deletes是一个可选标志,用于保留下载的文件。默认情况下,该工具会清理所有已下载的文件。- LANGUAGE:编程软件包语言,
如需了解详情,请参阅README。
使用验证脚本
本部分介绍了如何使用验证脚本来验证下载的软件包的签名。
第 1 步:获取签名网址
ZIP 文件的网址可在每个软件包的安全元数据中找到。以下示例来自 Container Analysis 元数据。
如以下示例所示,您可以在 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 文件:
使用应用默认凭据 (ADC) 设置身份验证。
使用以下命令下载
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,也可以使用验证脚本。
如需使用验证脚本进行验证,请运行以下命令:
下载验证脚本并授予权限。
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh运行验证脚本并进行验证。您可以使用签名 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 访问的受保障的开源软件元数据的签名。
使用 aoss-verifier 工具
使用 aoss-verifier 工具验证元数据。
在使用此工具之前,请先安装 Go。
安装 aoss-verifier 工具。
导出
$(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:可能的值包括
buildinfo、vexinfo和healthinfo。 - LANGUAGE:编程软件包语言,
java或python。值必须采用小写字母。 - PACKAGE_ID:对于 Java,格式为 groupId:artifactId。对于 Python,格式为 packageName。值必须采用小写字母。
- VERSION:软件包的版本。
--disable_certificate_verification是一个可选标志,如果使用,则会跳过通过证书链将叶证书与根证书进行匹配。--temp_downloads_path是一个可选标志,用于设置您要将文件下载到的路径(替换 TEMP_DOWNLOADS_DIR_PATH)。如果未设置此标志,文件将下载到当前目录中的tmp_downloads文件夹。--disable_deletes是一个可选标志,用于保留下载的文件。默认情况下,该工具会清理所有已下载的文件。- TYPE:可能的值包括
如需了解详情,请参阅自述文件。
使用验证脚本
本部分介绍了如何使用验证脚本来验证安全元数据文件。
第 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。
如需使用验证脚本进行验证,请运行以下命令:
下载验证脚本并授予权限。
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh运行验证脚本并进行验证。您应使用签名 zip 的本地路径。对于根证书,您可以使用网址或本地路径。数据文件将是我们正在验证的元数据文件 -
buildInfo.json、vexInfo.json或healthInfo.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。如需使用验证脚本快速验证签名,请按以下步骤操作:
如果您尚未下载
requirements.txt生成器脚本文件,请下载该文件。gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive提取根证书。网址链接为
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 替换为您要下载证书的本地路径
下载验证脚本(如果您尚未下载)。
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh运行验证脚本并进行验证。
./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 替换为根证书的本地路径。
- PATH_TO_DATA_FILE 替换为在第 2 步中获得的要验证的
签名验证脚本
您可以在 gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip 中查看此文件的签名。您可以使用手动验证或使用验证脚本来验证 signature.zip。如需使用验证脚本快速验证签名,请按以下步骤操作:
如果您尚未下载签名验证脚本文件,请下载该文件。
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh提取根证书。网址链接为
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 替换为您要下载证书的本地路径
运行验证脚本并进行验证。
./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。如需使用验证脚本快速验证签名,请按以下步骤操作:
如果您尚未下载
download_metadata.py脚本文件,请下载该文件。gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive提取根证书。网址链接为
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 替换为您要下载证书的本地路径
下载验证脚本。
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.sh运行验证脚本并进行验证。
./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 替换为根证书的本地路径。
- PATH_TO_DATA_FILE 替换为在第 2 步中获得的要验证的