Asset

Xác định duy nhất một tài sản.

Tài sản kỹ thuật số là một pháp nhân trực tuyến có thể nhận dạng và xác định địa chỉ, thường cung cấp một số dịch vụ hoặc nội dung. Ví dụ về các thành phần: trang web, ứng dụng Android, nguồn cấp dữ liệu Twitter và Plus Pages.

Biểu diễn dưới dạng JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Tên trường Loại Nội dung mô tả
Trường kết hợp, chỉ có một trong các trường sau:
web object(WebAsset) Thiết lập nếu đây là thành phần trên web.
androidApp object(AndroidAppAsset) Đặt nếu đây là thành phần Ứng dụng Android.

WebAsset

Mô tả tài sản trên web.

Biểu diễn dưới dạng JSON
{
  "site": string,
}
Tên trường Loại Nội dung mô tả
site string

Thành phần web được xác định bằng một URL chỉ chứa giao thức, tên máy chủ và các phần của cổng. Định dạng là

http[s]://<hostname>[:<port>]

Tên máy chủ phải đủ điều kiện: tên máy chủ phải kết thúc trong một khoảng thời gian (".").

Hiện chỉ cho phép các giao thức "http" và "https".

Số cổng được cung cấp dưới dạng số thập phân và phải được bỏ qua nếu số cổng tiêu chuẩn được sử dụng: 80 cho http và 443 cho https.

Chúng tôi gọi URL bị giới hạn này là "trang web". Tất cả URL có cùng lược đồ, tên máy chủ và cổng được xem là một phần của trang web và do đó thuộc về thành phần web.

Ví dụ: thành phần với trang web https://www.google.com chứa tất cả các URL sau:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Tuy nhiên, tài sản này không chứa các URL sau:

  • http://www.google.com/ (sai lược đồ)
  • https://google.com/ (tên máy chủ không khớp)
  • https://www.google.com:444/ (cổng không khớp) BẮT BUỘC

AndroidAppAsset

Mô tả thành phần ứng dụng Android.

Biểu diễn dưới dạng JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Tên trường Loại Nội dung mô tả
packageName string Thành phần Ứng dụng Android được xác định tự nhiên theo tên gói Java. Ví dụ: ứng dụng Google Maps sử dụng tên gói là com.google.android.apps.maps. BẮT BUỘC
certificate object(CertificateInfo)

Do không có quy tắc thực thi trên toàn cầu đối với tính duy nhất của tên gói, nên chúng tôi cũng yêu cầu chứng chỉ ký, kết hợp với tên gói giúp xác định duy nhất một ứng dụng.

Khoá ký của một số ứng dụng được xoay vòng nên có thể được ký bằng các khoá khác nhau theo thời gian. Chúng tôi coi những tài sản này là tài sản riêng biệt vì chúng tôi sử dụng (tên gói, chứng chỉ) làm mã nhận dạng duy nhất. Điều này thường không gây ra bất kỳ vấn đề nào vì cả hai phiên bản ứng dụng sẽ đưa ra các tuyên bố giống nhau hoặc tương tự nhau. Tuy nhiên, những thành phần khác đưa ra tuyên bố về ứng dụng sẽ phải được cập nhật khi xoay vòng khoá.

(Lưu ý rằng cú pháp để xuất bản và truy vấn các câu lệnh có chứa cú pháp dễ hiểu để bạn dễ dàng chỉ định các ứng dụng mà nhiều chứng chỉ biết đến.) BẮT BUỘC

CertificateInfo

Mô tả chứng chỉ X509.

Biểu diễn dưới dạng JSON
{
  "sha256Fingerprint": string,
}
Tên trường Loại Nội dung mô tả
sha256Fingerprint string

Dấu vân tay SHA-265 viết hoa của chứng chỉ. Bạn có thể lấy chứng chỉ PEM như sau:

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

hoặc như thế này:

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

Trong ví dụ này, nội dung của trường này sẽ là 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5.

Nếu không có các công cụ này, bạn có thể chuyển đổi chứng chỉ PEM sang định dạng DER, tính toán hàm băm SHA-256 của chuỗi đó rồi biểu diễn kết quả dưới dạng chuỗi hex (tức là biểu diễn thập lục phân viết hoa của từng octet, phân tách bằng dấu hai chấm).