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 ดังในตัวอย่างก่อนหน้า