API S/MIME ของ Gmail ให้การเข้าถึงแบบเป็นโปรแกรมเพื่อจัดการใบรับรองอีเมล S/MIME ให้แก่ผู้ใช้ใน Google Workspace โดเมน
ผู้ดูแลระบบต้องเปิดใช้ S/MIME สำหรับโดเมนเพื่อให้ใบรับรองใช้งานได้
มาตรฐาน S/MIME ระบุข้อกำหนดสำหรับการเข้ารหัสด้วยคีย์สาธารณะและการลงนามข้อมูล MIME การกำหนดค่าใบรับรอง S/MIME ในบัญชีของผู้ใช้จะทำให้ Gmail ใช้ใบรับรองดังกล่าวในลักษณะต่อไปนี้
- Gmail ใช้ใบรับรองและคีย์ส่วนตัวของผู้ใช้เพื่อลงนามในอีเมลขาออก
- Gmail ใช้คีย์ส่วนตัวของผู้ใช้เพื่อถอดรหัสอีเมลขาเข้า
- Gmail ใช้ใบรับรองและคีย์สาธารณะของผู้รับเพื่อเข้ารหัสอีเมลขาออก
- Gmail ใช้ใบรับรองและคีย์สาธารณะของผู้ส่งเพื่อยืนยันอีเมลขาเข้า
คุณสร้างใบรับรอง S/MIME แต่ละใบและอัปโหลดโดยใช้ API ใบรับรอง S/MIME แต่ละใบมีไว้สำหรับอีเมลแทนที่ของบัญชีอีเมลผู้ใช้ที่เฉพาะเจาะจง ซึ่งรวมถึงอีเมลหลักและอีเมล "ส่งในชื่อ" ที่กําหนดเอง ระบบจะทำเครื่องหมายใบรับรอง S/MIME รายการเดียวเป็นค่าเริ่มต้นสำหรับอีเมลแทนแต่ละรายการ
การให้สิทธิ์เข้าถึง API
การให้สิทธิ์เข้าถึง API มี 2 รูปแบบ ได้แก่
- คุณสามารถใช้บัญชีบริการที่มีการมอบสิทธิ์ทั่วทั้งโดเมน ดูคำอธิบายของข้อกำหนดเหล่านี้ได้ที่ข้อกำหนดภาพรวมการตรวจสอบสิทธิ์และการให้สิทธิ์ ดูข้อมูลเกี่ยวกับการเปิดใช้ตัวเลือกนี้ได้ที่หัวข้อสร้างบัญชีบริการที่มีการมอบสิทธิ์ทั่วทั้งโดเมน
- คุณสามารถใช้ขั้นตอน OAuth2 มาตรฐานที่กําหนดให้ผู้ใช้ปลายทางให้ความยินยอมเพื่อรับโทเค็นการเข้าถึง OAuth2 ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมการตรวจสอบสิทธิ์และการให้สิทธิ์ หากต้องการใช้ตัวเลือกนี้ ผู้ดูแลระบบโดเมนต้องเปิดใช้ช่องทำเครื่องหมาย "เปิดใช้การเข้าถึง S/MIME API ของผู้ใช้ปลายทาง" ในแผงควบคุมโดเมน
ขอบเขต ACL
API นี้ใช้ขอบเขต ACL เดียวกันกับเมธอด Gmail sendAs ดังนี้
- gmail.settings.basic
- จำเป็นต้องใช้ขอบเขตนี้สำหรับการอัปเดต S/MIME ของ SendAs หลัก
- gmail.settings.sharing
- ต้องใช้ขอบเขตนี้สำหรับการอัปเดต S/MIME ที่กำหนดเองจาก
การใช้ API
ทรัพยากร users.settings.sendAs.smimeInfo แสดงวิธีการที่คุณใช้จัดการใบรับรอง S/MIME ใบรับรองแต่ละรายการจะเชื่อมโยงกับอีเมลที่ใช้ส่งแทน 1 รายการสำหรับผู้ใช้
อัปโหลดคีย์ S/MIME
ใช้เมธอด smimeInfo.insert() เพื่ออัปโหลดคีย์ S/MIME ใหม่สำหรับอีเมลแทนของผู้ใช้ คุณระบุอีเมลแทนของเป้าหมายได้โดยใช้พารามิเตอร์ต่อไปนี้
- userId
- อีเมลของผู้ใช้ คุณสามารถใช้ค่าพิเศษ
me
เพื่อระบุผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้ - sendAsEmail
- อีเมลแทนที่คุณจะใช้อัปโหลดคีย์ ซึ่งเป็นอีเมลที่ปรากฏในส่วนหัว "จาก:" สำหรับอีเมลที่ส่งโดยใช้อีเมลแทนนี้
ใบรับรอง S/MIME และคีย์ส่วนตัวควรอยู่ในช่อง pkcs12
ในรูปแบบดังกล่าว และไม่ควรตั้งค่าช่องอื่นๆ ในคำขอ ช่อง PKCS12 ควรมีทั้งคีย์ S/MIME ของผู้ใช้และเชนใบรับรองการลงนาม API จะดำเนินการตรวจสอบมาตรฐานในช่องนี้ก่อนยอมรับ โดยยืนยันข้อมูลต่อไปนี้
- เรื่องตรงกับอีเมลที่ระบุ
- วันหมดอายุถูกต้อง
- ผู้ออกใบรับรอง (CA) อยู่ในรายการที่เชื่อถือได้
- ใบรับรองตรงกับข้อจำกัดทางเทคนิคของ Gmail
หากคีย์ได้รับการเข้ารหัส รหัสผ่านควรอยู่ในencryptedKeyPassword
ช่อง การเรียกใช้ insert() ที่สำเร็จจะแสดงผลรหัสของ smimeInfo ซึ่งสามารถใช้เพื่ออ้างอิงคีย์ในอนาคต
แสดงรายการคีย์ S/MIME ของผู้ใช้
ใช้เมธอด smimeInfo.list() เพื่อแสดงรายการคีย์ S/MIME ของผู้ใช้สำหรับอีเมลแทนที่ที่ระบุ คุณระบุอีเมลแทนของเป้าหมายได้โดยใช้พารามิเตอร์ต่อไปนี้
- userId
- อีเมลของผู้ใช้ คุณสามารถใช้ค่าพิเศษ
me
เพื่อระบุผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้ - sendAsEmail
- ชื่อแทนที่จะแสดงรายการคีย์ ซึ่งเป็นอีเมลที่ปรากฏในส่วนหัว "จาก:" สำหรับอีเมลที่ส่งโดยใช้อีเมลแทนนี้
เรียกข้อมูลคีย์ S/MIME สำหรับอีเมลแทน
ใช้เมธอด smimeInfo.get() เพื่อแสดงคีย์ S/MIME ที่เฉพาะเจาะจงสำหรับอีเมลที่ใช้ส่งแทนของผู้ใช้ คุณระบุอีเมลแทนของเป้าหมายได้โดยใช้พารามิเตอร์ต่อไปนี้
- userId
- อีเมลของผู้ใช้ คุณสามารถใช้ค่าพิเศษ
me
เพื่อระบุผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้ - sendAsEmail
- ชื่อแทนที่คุณจะใช้ดึงข้อมูลคีย์ ซึ่งเป็นอีเมลที่ปรากฏในส่วนหัว "จาก:" สำหรับอีเมลที่ส่งโดยใช้อีเมลแทนนี้
ลบคีย์ S/MIME
ใช้เมธอด smimeInfo.delete() เพื่อลบคีย์ S/MIME ที่ระบุออกจากอีเมลแทน คุณระบุอีเมลแทนของเป้าหมายได้โดยใช้พารามิเตอร์ต่อไปนี้
- userId
- อีเมลของผู้ใช้ คุณสามารถใช้ค่าพิเศษ
me
เพื่อระบุผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้ - sendAsEmail
- ชื่อแทนที่คุณจะใช้ดึงข้อมูลคีย์ ซึ่งเป็นอีเมลที่ปรากฏในส่วนหัว "จาก:" สำหรับอีเมลที่ส่งโดยใช้อีเมลแทนนี้
- id
- รหัสที่เปลี่ยนแปลงไม่ได้สำหรับ SmimeInfo
ตั้งค่าคีย์ S/MIME เริ่มต้นสำหรับอีเมลแทน
ใช้เมธอด smimeInfo.setDefault() เพื่อทําเครื่องหมายคีย์ S/MIME ที่ระบุเป็นค่าเริ่มต้นสําหรับอีเมลแทนที่ที่ระบุ คุณระบุอีเมลแทนของเป้าหมายได้โดยใช้พารามิเตอร์ต่อไปนี้
- userId
- อีเมลของผู้ใช้ คุณสามารถใช้ค่าพิเศษ
me
เพื่อระบุผู้ใช้ที่ตรวจสอบสิทธิ์อยู่ในขณะนี้ - sendAsEmail
- ชื่อแทนที่คุณจะใช้ดึงข้อมูลคีย์ ซึ่งเป็นอีเมลที่ปรากฏในส่วนหัว "จาก:" สำหรับอีเมลที่ส่งโดยใช้อีเมลแทนนี้
- id
- รหัสที่เปลี่ยนแปลงไม่ได้สำหรับ SmimeInfo
โค้ดตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงการใช้ API เพื่อจัดการใบรับรอง S/MIME สําหรับองค์กรที่มีผู้ใช้หลายคน
การสร้างทรัพยากร SmimeInfo สําหรับใบรับรอง S/MIME
ตัวอย่างโค้ดต่อไปนี้แสดงการอ่านใบรับรองจากไฟล์ การเข้ารหัสเป็นสตริง base64url และการกําหนดค่าให้กับช่อง pkcs12
ของทรัพยากร smimeInfo
Java
Python
การอัปโหลดใบรับรอง S/MIME
หากต้องการอัปโหลดใบรับรอง ให้เรียกใช้ smimeInfo.insert
และระบุแหล่งข้อมูล 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 ดังนี้
การจัดการใบรับรอง
ตัวอย่างนี้รวมการเรียกใช้หลายรายการจาก smimeInfo
API เพื่อแสดงวิธีที่คุณอาจจัดการใบรับรองสําหรับองค์กร โดยจะแสดงรายการใบรับรองของผู้ใช้ และหากใบรับรองเริ่มต้นหมดอายุหรือไม่ได้ตั้งค่าไว้ ระบบจะอัปโหลดใบรับรองที่พบในไฟล์ที่ระบุ จากนั้นระบบจะตั้งค่าใบรับรองที่วันหมดอายุอยู่ไกลที่สุดในอนาคตเป็นค่าเริ่มต้น
จากนั้นเรียกใช้จากฟังก์ชันที่ประมวลผลไฟล์ CSV ดังตัวอย่างก่อนหน้านี้