เอกสารนี้อธิบายวิธีใช้ใบรับรองอีเมล S/MIME กับ Gmail API
Gmail API ให้สิทธิ์เข้าถึงแบบเป็นโปรแกรมเพื่อจัดการใบรับรองอีเมล S/MIME สำหรับผู้ใช้ในโดเมน Google Workspace
ผู้ดูแลระบบต้องเปิดใช้ S/MIME ที่โฮสต์สำหรับโดเมนเพื่อให้ใบรับรองทำงานได้
มาตรฐาน S/MIME มีข้อกำหนดสำหรับการเข้ารหัสคีย์สาธารณะและการลงนามข้อมูล MIME เมื่อกำหนดค่าใบรับรอง S/MIME สำหรับบัญชีผู้ใช้ Gmail จะใช้ใบรับรองดังกล่าวในลักษณะต่อไปนี้
ลงนามในอีเมลขาออกด้วยใบรับรองผู้ใช้และคีย์ส่วนตัว
ถอดรหัสอีเมลขาเข้าด้วยคีย์ส่วนตัวของผู้ใช้
เข้ารหัสอีเมลขาออกด้วยใบรับรองและคีย์สาธารณะของผู้รับ
ยืนยันอีเมลขาเข้าด้วยใบรับรองผู้ส่งและคีย์สาธารณะ
คุณสร้างใบรับรอง S/MIME แต่ละใบและอัปโหลดได้โดยใช้ Gmail API ใบรับรอง S/MIME แต่ละใบมีไว้สำหรับอีเมลแทนที่เฉพาะเจาะจงสำหรับบัญชีอีเมลของผู้ใช้ อีเมลแทนประกอบด้วยอีเมลหลักและอีเมลที่กำหนดเองสำหรับส่งในนาม API จะทำเครื่องหมายใบรับรอง S/MIME รายการเดียวเป็นค่าเริ่มต้นสำหรับ นามแฝงแต่ละรายการ
ดูข้อมูลเพิ่มเติมเกี่ยวกับอีเมลแทนได้ที่จัดการอีเมลแทนและลายเซ็นด้วย Gmail API
ให้สิทธิ์เข้าถึง API
หากต้องการให้สิทธิ์เข้าถึง Gmail API ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
ใช้บัญชีบริการที่มีการมอบสิทธิ์ทั่วทั้งโดเมน ดูคำอธิบายของคำศัพท์เหล่านี้ได้ที่ดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ หากต้องการ เปิดใช้ตัวเลือกนี้ โปรดดูสร้างข้อมูล เข้าสู่ระบบ
ใช้ขั้นตอน OAuth 2.0 มาตรฐานที่ต้องได้รับความยินยอมของผู้ใช้เพื่อรับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ดูข้อมูลเพิ่มเติมได้ที่ดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์
หากต้องการใช้ตัวเลือกนี้ ผู้ดูแลระบบโดเมนต้องเลือกช่องทำเครื่องหมายเปิดใช้การเข้ารหัส S/MIME ในการรับส่งอีเมลในคอนโซลผู้ดูแลระบบของ Google ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเปิดใช้ S/MIME ที่โฮสต์ ใน คอนโซลผู้ดูแลระบบ
ขอบเขตการให้สิทธิ์
Gmail API ใช้ขอบเขต OAuth เดียวกันกับเมธอด Gmail sendAs ดังนี้
gmail.settings.basic: ต้องอัปเดตSendAsS/MIME หลักgmail.settings.sharing: ต้องอัปเดต from S/MIME ที่กำหนดเอง
กำหนดค่าคีย์ S/MIME
แหล่งข้อมูล
settings.sendAs.smimeInfo
มีหลายวิธีในการจัดการใบรับรอง S/MIME
ใบรับรองแต่ละรายการจะเชื่อมโยงกับนามแฝงส่งในนามของผู้ใช้ 1 ราย
หากต้องการกำหนดชื่อแทนสำหรับส่งในนามของผู้ใช้ ให้ใช้เมธอด
settings.sendAs.list
ในทรัพยากร
settings.sendAs
อัปโหลดคีย์ S/MIME
ใช้วิธี
settings.sendAs.smimeInfo.insert
ในทรัพยากร settings.sendAs.smimeInfo เพื่ออัปโหลดคีย์ S/MIME ใหม่
สำหรับอีเมลแทนที่เป็นของผู้ใช้ ระบุชื่อแทนเป้าหมายโดยใช้พารามิเตอร์เส้นทางต่อไปนี้
userId: อีเมลของผู้ใช้ ใช้ค่าพิเศษmeเพื่อระบุ ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์sendAsEmail: นามแฝงที่คุณอัปโหลดคีย์ อีเมลนี้จะปรากฏในส่วนหัวFrom:ของอีเมลที่ส่งโดยใช้อีเมลแทนนี้
ระบุใบรับรอง S/MIME และคีย์ส่วนตัวในฟิลด์
pkcs12
ในรูปแบบ PKCS #12 อย่าตั้งค่าฟิลด์อื่นๆ ในคำขอ ฟิลด์
pkcs12 มีทั้งคีย์ S/MIME ของผู้ใช้และห่วงโซ่
ใบรับรองการลงนาม API จะทำการตรวจสอบมาตรฐานในช่องนี้ก่อนที่จะยอมรับ โดยจะตรวจสอบสิ่งต่อไปนี้
- เรื่องตรงกับอีเมลที่ระบุ
- วันหมดอายุถูกต้อง
- ผู้ออกใบรับรอง (CA) อยู่ในรายการที่ Google เชื่อถือ
- ใบรับรองตรงกับข้อจำกัดทางเทคนิคของ Gmail
หากคีย์มีการเข้ารหัส ให้ระบุรหัสผ่านในฟิลด์
encryptedKeyPassword
การเรียกใช้เมธอด settings.sendAs.smimeInfo.insert ที่สำเร็จจะแสดงผลทรัพยากร settings.sendAs.smimeInfo id ที่ใช้เพื่ออ้างอิงคีย์ในอนาคต
แสดงรายการคีย์ S/MIME ของผู้ใช้
ใช้เมธอด
settings.sendAs.smimeInfo.list
ในทรัพยากร settings.sendAs.smimeInfo เพื่อแสดงรายการคีย์ S/MIME
สำหรับผู้ใช้ที่ระบุสำหรับนามแฝงที่ระบุ ระบุชื่อแทนเป้าหมายโดยใช้พารามิเตอร์เส้นทางต่อไปนี้
userId: อีเมลของผู้ใช้ ใช้ค่าพิเศษmeเพื่อระบุ ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์sendAsEmail: นามแฝงที่จะใช้แสดงรายการคีย์ อีเมลนี้จะปรากฏในส่วนหัวของFrom:สำหรับอีเมลที่ส่งโดยใช้นามแฝงนี้
ดึงคีย์ S/MIME สำหรับอีเมลแทน
ใช้วิธีการ
settings.sendAs.smimeInfo.get
ในทรัพยากร settings.sendAs.smimeInfo เพื่อแสดงคีย์ S/MIME
ที่เฉพาะเจาะจงสำหรับอีเมลแทนส่งในฐานะที่เฉพาะเจาะจงสำหรับผู้ใช้ ระบุชื่อแทนเป้าหมายโดยใช้พารามิเตอร์เส้นทางต่อไปนี้
userId: อีเมลของผู้ใช้ ใช้ค่าพิเศษmeเพื่อระบุ ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์sendAsEmail: นามแฝงที่คุณกำลังดึงคีย์ อีเมลนี้จะปรากฏในส่วนหัวFrom:ของอีเมลที่ส่งโดยใช้อีเมลแทนนี้
ลบคีย์ S/MIME
ใช้เมธอด
settings.sendAs.smimeInfo.delete
ในทรัพยากร settings.sendAs.smimeInfo เพื่อลบคีย์ S/MIME ที่ระบุออกจากชื่อแทน ระบุชื่อแทนเป้าหมายโดยใช้พารามิเตอร์เส้นทางต่อไปนี้
userId: อีเมลของผู้ใช้ ใช้ค่าพิเศษmeเพื่อระบุ ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์sendAsEmail: ชื่อแทนที่คุณจะลบคีย์ อีเมลนี้จะปรากฏในส่วนหัวFrom:ของอีเมลที่ส่งโดยใช้อีเมลแทนนี้id: รหัสที่เปลี่ยนแปลงไม่ได้สำหรับsmimeInfo
คีย์ที่ถูกลบจะมองไม่เห็นและใช้งานไม่ได้อีกต่อไป คุณถอดรหัสอีเมล S/MIME ที่ได้รับซึ่งเข้ารหัสโดยใช้คีย์สาธารณะที่เกี่ยวข้องไม่ได้ ก่อนลบคีย์ ให้เพิกถอนคีย์กับผู้ออกคีย์ (CA)
ตั้งค่าคีย์ S/MIME เริ่มต้นสำหรับอีเมลแทน
ใช้เมธอด
settings.sendAs.smimeInfo.setDefault
ในทรัพยากร settings.sendAs.smimeInfo เพื่อทำเครื่องหมายคีย์ S/MIME
ที่ระบุเป็นค่าเริ่มต้นสำหรับชื่อแทนที่ระบุ ระบุชื่อแทนเป้าหมายโดยใช้พารามิเตอร์เส้นทางต่อไปนี้
userId: อีเมลของผู้ใช้ ใช้ค่าพิเศษmeเพื่อระบุ ผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์sendAsEmail: นามแฝงที่จะตั้งค่าคีย์เริ่มต้น อีเมลนี้จะปรากฏในส่วนหัวFrom:ของอีเมลที่ส่งโดยใช้อีเมลแทนนี้id: รหัสที่เปลี่ยนแปลงไม่ได้สำหรับsmimeInfo
มีเพียงคีย์ S/MIME รายการเดียวเท่านั้นที่เป็นค่าเริ่มต้นสำหรับอีเมลแทนที่ใช้ส่งของผู้ใช้ การเรียกใช้เมธอด
settings.sendAs.smimeInfo.setDefault จะยกเลิกการตั้งค่าเริ่มต้นก่อนหน้า
เมื่อผู้ใช้ได้รับข้อความ S/MIME ที่ลงนามด้วยคีย์ที่ระบุ
Gmail จะเชื่อมโยงคีย์กับnot_beforeวันที่หมดอายุ
ที่อยู่ไกลที่สุดในอนาคตเป็นค่าเริ่มต้นเมื่อเข้ารหัสอีเมลที่ส่งไปยัง
ผู้ใช้ที่เชื่อมโยง หากต้องการให้ผู้ใช้ Gmail ที่ผู้ใช้เคยสื่อสารด้วยใช้คีย์เริ่มต้นใหม่ ให้ตรวจสอบว่าคีย์เริ่มต้นใหม่มีnot_beforeวันที่หลังจากคีย์เริ่มต้นก่อนหน้า หรือเพิกถอนคีย์เริ่มต้นก่อนหน้า
ตัวอย่างโค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ Gmail API เพื่อจัดการ ใบรับรอง S/MIME สำหรับองค์กรที่มีผู้ใช้หลายราย
สร้างsmimeInfoสำหรับใบรับรอง S/MIME
ตัวอย่างโค้ดนี้แสดงวิธีอ่านใบรับรองจากไฟล์ เข้ารหัสเป็นสตริง
Base64URL และกำหนดให้กับฟิลด์
pkcs12
ในทรัพยากร settings.sendAs.smimeInfo
Java
Python
อัปโหลดใบรับรอง S/MIME
หากต้องการอัปโหลดใบรับรอง ให้เรียกใช้เมธอด
settings.sendAs.smimeInfo.insert
และระบุทรัพยากร settings.sendAs.smimeInfo ในเนื้อหาของคำขอ
Java
Python
จัดการใบรับรองของผู้ใช้หลายคน
ตัวอย่างโค้ดเหล่านี้แสดงวิธีจัดการใบรับรองสำหรับผู้ใช้หลายรายในองค์กรในการเรียกแบบกลุ่มครั้งเดียว
แทรกใบรับรองจากไฟล์ CSV
ต่อไปนี้คือตัวอย่างไฟล์ CSV ที่แสดงรหัสผู้ใช้และเส้นทางไปยังใบรับรองของผู้ใช้แต่ละราย
$ cat certificates.csv
user1@example.com,/path/to/user1_cert.p12,cert_password_1
user2@example.com,/path/to/user2_cert.p12,cert_password_2
user3@example.com,/path/to/user3_cert.p12,cert_password_3
Java
คุณสามารถใช้ตัวอย่าง
CreateSmimeInfo
และ InsertSmimeInfo
เพื่ออัปโหลดใบรับรองสำหรับผู้ใช้ที่ระบุในไฟล์ CSV ได้
Python
คุณสามารถใช้ตัวอย่าง
create_smime_info
และ insert_smime_info
เพื่ออัปโหลดใบรับรองสำหรับผู้ใช้ที่ระบุในไฟล์ CSV ได้
การจัดการใบรับรอง
ตัวอย่างนี้รวมหลายวิธีจากแหล่งข้อมูล settings.sendAs.smimeInfo
เพื่อแสดงวิธีจัดการใบรับรองสำหรับองค์กร โดยจะแสดงรายการ
ใบรับรองสำหรับผู้ใช้ หากใบรับรองเริ่มต้นหมดอายุหรือไม่ได้ตั้งค่า ระบบจะ
อัปโหลดใบรับรองที่พบในไฟล์ที่ระบุ จากนั้นจะตั้งค่าใบรับรองที่หมดอายุในอนาคตเป็นค่าเริ่มต้น
จากนั้นฟังก์ชันนี้จะประมวลผลไฟล์ CSV ซึ่งคล้ายกับตัวอย่างแทรก ใบรับรองจากไฟล์ CSV ก่อนหน้านี้
Java
Python
หัวข้อที่เกี่ยวข้อง
- จัดการอีเมลแทนและลายเซ็นด้วย Gmail API
- เลือกขอบเขต Gmail API
- เปิดใช้ S/MIME ที่โฮสต์สำหรับการเข้ารหัสข้อความ