Asset

ระบุเนื้อหาโดยไม่ซ้ำกัน

เนื้อหาดิจิทัลคือเอนทิตีออนไลน์ที่ระบุตัวบุคคลนั้นได้และเข้าถึงได้ ซึ่งโดยปกติแล้วจะให้บริการหรือเนื้อหาบางอย่าง ตัวอย่างเนื้อหา ได้แก่ เว็บไซต์, แอป Android, ฟีด Twitter และ Plus Pages

การแสดง JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
ชื่อช่อง ประเภท คำอธิบาย
ฟิลด์สหภาพ มีเพียงรายการใดรายการหนึ่งต่อไปนี้
web object(WebAsset) กำหนดว่าเนื้อหานี้เป็นเนื้อหาเว็บหรือไม่
androidApp object(AndroidAppAsset) กำหนดว่าเป็นชิ้นงานแอป Android หรือไม่

WebAsset

อธิบายเนื้อหาเว็บ

การแสดง JSON
{
  "site": string,
}
ชื่อช่อง ประเภท คำอธิบาย
site string

เนื้อหาในเว็บจะระบุโดย URL ที่มีเฉพาะรูปแบบ ชื่อโฮสต์ และส่วนพอร์ต รูปแบบคือ

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

ชื่อโฮสต์ต้องเป็นแบบเต็ม โดยต้องลงท้ายด้วยจุดเดียว (".")

เฉพาะรูปแบบ "http" และ "https" เท่านั้นในปัจจุบัน

หมายเลขพอร์ตจะระบุเป็นเลขทศนิยม และต้องละเว้นหากใช้หมายเลขพอร์ตมาตรฐาน เช่น 80 สำหรับ http และ 443 สำหรับ https

เราเรียก URL ที่จำกัดนี้ว่า "ไซต์" URL ทั้งหมดที่ใช้รูปแบบ ชื่อโฮสต์ และพอร์ตเดียวกันถือว่าเป็นส่วนหนึ่งของเว็บไซต์ ดังนั้นจึงเป็นของเนื้อหาเว็บ

ตัวอย่างเช่น เนื้อหาที่มีเว็บไซต์ https://www.google.com มี URL เหล่านี้ทั้งหมด

  • 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/

แต่ไม่มี URL เหล่านี้:

  • http://www.google.com/ (สคีมไม่ถูกต้อง)
  • https://google.com/ (ชื่อโฮสต์ไม่ตรงกัน)
  • https://www.google.com:444/ (พอร์ตไม่ตรงกัน) ต้องระบุ

AndroidAppAsset

อธิบายชิ้นงานแอป Android

การแสดง JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
ชื่อช่อง ประเภท คำอธิบาย
packageName string โดยปกติแล้วเนื้อหาแอป Android จะระบุด้วยชื่อแพ็กเกจ Java ตัวอย่างเช่น แอป Google Maps ใช้ชื่อแพ็กเกจ com.google.android.apps.maps ต้องระบุ
certificate object(CertificateInfo)

เนื่องจากไม่มีการบังคับใช้ที่ไม่ซ้ำกันสำหรับชื่อแพ็กเกจทั่วโลก เราจึงกำหนดให้ต้องมีใบรับรองที่ลงนามด้วย ซึ่งเมื่อใช้ร่วมกับชื่อแพ็กเกจจะระบุแอปที่ไม่ซ้ำกัน

คีย์ Signing ของบางแอปจะมีการหมุนเวียน ดังนั้นอาจมีการลงชื่อโดยใช้คีย์ต่างๆ เมื่อเวลาผ่านไป เราถือว่าข้อมูลเหล่านี้เป็นเนื้อหาที่แตกต่างกันเนื่องจากเราใช้ (ชื่อแพ็กเกจ ใบรับรอง) เป็นรหัสที่ไม่ซ้ำกัน โดยปกตินี้จะไม่ก่อให้เกิดปัญหาใดๆ เนื่องจากแอปทั้ง 2 เวอร์ชันจะมีข้อความที่เหมือนกันหรือคล้ายกัน อย่างไรก็ตาม เนื้อหาอื่นๆ ที่ระบุข้อความเกี่ยวกับแอปจะต้องได้รับการอัปเดตเมื่อมีการหมุนเวียนคีย์

(โปรดทราบว่าไวยากรณ์สำหรับการเผยแพร่และการค้นหาข้อความจะมีน้ำตาลสังเคราะห์เพื่อให้คุณระบุแอปที่ใบรับรองหลายใบรู้จักได้อย่างง่ายดาย) ต้องระบุ

CertificateInfo

อธิบายใบรับรอง X509

การแสดง JSON
{
  "sha256Fingerprint": string,
}
ชื่อช่อง ประเภท คำอธิบาย
sha256Fingerprint string

ลายนิ้วมือ SHA-265 ตัวพิมพ์ใหญ่ของใบรับรอง ใบรับรอง PEM จะรับรูปแบบต่อไปนี้ได้

$ 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

หรือแบบนี้

$ 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

ในตัวอย่างนี้ เนื้อหาของช่องนี้จะเป็น 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

หากเครื่องมือเหล่านี้ไม่พร้อมใช้งาน คุณสามารถแปลงใบรับรอง PEM เป็นรูปแบบ DER โดยคำนวณแฮช SHA-256 ของสตริงนั้นและแสดงผลลัพธ์เป็นสตริงฐานสิบหก (ซึ่งก็คือเลขฐานสิบหกตัวพิมพ์ใหญ่ของอ็อกเท็ตแต่ละตัว โดยคั่นด้วยโคลอน)