Tài liệu này giải thích cách sử dụng chứng chỉ email S/MIME với Gmail API.
Gmail API cung cấp quyền truy cập theo chương trình để quản lý chứng chỉ email S/MIME cho người dùng trong một miền Google Workspace.
Quản trị viên phải bật S/MIME được lưu trữ cho miền thì các chứng chỉ mới hoạt động.
Tiêu chuẩn S/MIME cung cấp một quy cách để mã hoá khoá công khai và ký dữ liệu MIME. Khi bạn định cấu hình chứng chỉ S/MIME cho một tài khoản người dùng, Gmail sẽ sử dụng các chứng chỉ đó theo những cách sau:
Ký thư gửi đi bằng chứng chỉ người dùng và khoá riêng tư.
Giải mã thư đến bằng khoá riêng tư của người dùng.
Mã hoá thư gửi đi bằng chứng chỉ và khoá công khai của người nhận.
Xác minh thư đến bằng chứng chỉ và khoá công khai của người gửi.
Bạn có thể tạo từng chứng chỉ S/MIME và tải chúng lên bằng API Gmail. Mỗi chứng chỉ S/MIME là dành cho một email đại diện cụ thể của tài khoản email người dùng. Các bí danh bao gồm địa chỉ email chính và địa chỉ tuỳ chỉnh dùng để gửi email dưới tên khác. API đánh dấu một chứng chỉ S/MIME duy nhất làm chứng chỉ mặc định cho mỗi bí danh.
Để biết thêm thông tin về biệt hiệu, hãy xem bài viết Quản lý biệt hiệu và chữ ký bằng Gmail API.
Cấp quyền truy cập API
Để uỷ quyền truy cập vào Gmail API, hãy sử dụng một trong các phương thức sau:
Sử dụng tài khoản dịch vụ có quyền uỷ quyền trên toàn miền. Để biết giải thích về các thuật ngữ này, hãy xem phần Tìm hiểu về quy trình xác thực và uỷ quyền. Để bật lựa chọn này, hãy xem phần Tạo thông tin đăng nhập để truy cập.
Sử dụng quy trình OAuth 2.0 tiêu chuẩn yêu cầu sự đồng ý của người dùng để lấy mã truy cập OAuth 2.0. Để biết thêm thông tin, hãy xem phần Tìm hiểu về quy trình xác thực và uỷ quyền.
Để sử dụng lựa chọn này, quản trị viên miền phải chọn hộp đánh dấu Bật mã hoá S/MIME để gửi và nhận email trong Bảng điều khiển dành cho quản trị viên của Google. Để biết thêm thông tin, hãy xem bài viết Bật S/MIME được lưu trữ trong Bảng điều khiển dành cho quản trị viên.
Phạm vi uỷ quyền
Gmail API dựa vào cùng các phạm vi OAuth như các phương thức Gmail sendAs:
gmail.settings.basic: Bắt buộc để cập nhật S/MIMESendAschính.gmail.settings.sharing: Bắt buộc để cập nhật S/MIME from tuỳ chỉnh.
Định cấu hình khoá S/MIME
Tài nguyên settings.sendAs.smimeInfo cung cấp một số phương thức để quản lý chứng chỉ S/MIME. Mỗi chứng chỉ được liên kết với một bí danh gửi dưới tên của người dùng.
Để xác định các bí danh gửi dưới tên của người dùng, hãy sử dụng phương thức settings.sendAs.list trên tài nguyên settings.sendAs.
Tải khoá S/MIME lên
Sử dụng phương thức settings.sendAs.smimeInfo.insert trên tài nguyên settings.sendAs.smimeInfo để tải khoá S/MIME mới lên cho một biệt hiệu thuộc về người dùng. Xác định bí danh mục tiêu bằng các tham số đường dẫn sau:
userId: Địa chỉ email của người dùng. Sử dụng giá trị đặc biệtmeđể cho biết người dùng đã xác thực.sendAsEmail: Bí danh mà bạn đang tải khoá lên. Địa chỉ email này sẽ xuất hiện trong tiêu đềFrom:của thư được gửi bằng bí danh này.
Cung cấp chứng chỉ S/MIME và khoá riêng tư trong trường pkcs12 ở định dạng PKCS #12. Đừng đặt bất kỳ trường nào khác trong yêu cầu. Trường pkcs12 chứa cả khoá S/MIME của người dùng và chuỗi chứng chỉ ký. API thực hiện các bước xác thực tiêu chuẩn trên trường này trước khi chấp nhận, xác minh những điều sau:
- Tiêu đề khớp với địa chỉ email đã chỉ định.
- Ngày hết hạn là hợp lệ.
- Tổ chức phát hành chứng chỉ (CA) nằm trong danh sách đáng tin cậy của Google.
- Các chứng chỉ này đáp ứng các hạn chế kỹ thuật của Gmail.
Nếu khoá được mã hoá, hãy cung cấp mật khẩu trong trường encryptedKeyPassword. Lệnh gọi phương thức settings.sendAs.smimeInfo.insert thành công sẽ trả về tài nguyên settings.sendAs.smimeInfo id dùng để tham chiếu đến khoá trong tương lai.
Liệt kê các khoá S/MIME của người dùng
Sử dụng phương thức settings.sendAs.smimeInfo.list trên tài nguyên settings.sendAs.smimeInfo để trả về danh sách khoá S/MIME cho người dùng và email đại diện đã cho. Xác định bí danh mục tiêu bằng các tham số đường dẫn sau:
userId: Địa chỉ email của người dùng. Sử dụng giá trị đặc biệtmeđể cho biết người dùng đã xác thực.sendAsEmail: Bí danh để liệt kê các khoá. Địa chỉ email này xuất hiện trong tiêu đềFrom:của thư được gửi bằng email đại diện này.
Truy xuất khoá S/MIME cho một biệt hiệu
Sử dụng phương thức settings.sendAs.smimeInfo.get trên tài nguyên settings.sendAs.smimeInfo để trả về các khoá S/MIME cụ thể cho một email đại diện gửi dưới tên cụ thể của người dùng. Xác định bí danh mục tiêu bằng cách sử dụng các tham số đường dẫn sau:
userId: Địa chỉ email của người dùng. Sử dụng giá trị đặc biệtmeđể cho biết người dùng đã xác thực.sendAsEmail: Bí danh mà bạn đang truy xuất các khoá. Địa chỉ email này sẽ xuất hiện trong tiêu đềFrom:của thư được gửi bằng bí danh này.
Xoá khoá S/MIME
Sử dụng phương thức settings.sendAs.smimeInfo.delete trên tài nguyên settings.sendAs.smimeInfo để xoá khoá S/MIME đã chỉ định khỏi một biệt hiệu. Xác định bí danh mục tiêu bằng các tham số đường dẫn sau:
userId: Địa chỉ email của người dùng. Sử dụng giá trị đặc biệtmeđể cho biết người dùng đã xác thực.sendAsEmail: Bí danh mà bạn đang xoá khoá. Địa chỉ email này sẽ xuất hiện trong tiêu đềFrom:của thư được gửi bằng bí danh này.id: Mã nhận dạng không thay đổi chosmimeInfo.
Khoá đã bị xoá sẽ không còn xuất hiện hoặc sử dụng được nữa. Bạn không thể giải mã email S/MIME đã nhận được mã hoá bằng khoá công khai tương ứng. Trước khi xoá khoá, hãy thu hồi khoá đó bằng cơ quan cấp (CA).
Đặt khoá S/MIME mặc định cho một email đại diện
Sử dụng phương thức settings.sendAs.smimeInfo.setDefault trên tài nguyên settings.sendAs.smimeInfo để đánh dấu khoá S/MIME đã chỉ định làm khoá mặc định cho bí danh đã chỉ định. Xác định bí danh mục tiêu bằng các tham số đường dẫn sau:
userId: Địa chỉ email của người dùng. Sử dụng giá trị đặc biệtmeđể cho biết người dùng đã xác thực.sendAsEmail: Bí danh mà bạn muốn đặt khoá mặc định. Địa chỉ email này sẽ xuất hiện trong tiêu đềFrom:của thư được gửi bằng bí danh này.id: Mã nhận dạng không thay đổi chosmimeInfo.
Chỉ có một khoá S/MIME mặc định cho email đại diện gửi dưới tên của người dùng. Khi gọi phương thức settings.sendAs.smimeInfo.setDefault, chế độ mặc định trước đó sẽ bị huỷ.
Khi người dùng nhận được thư S/MIME được ký bằng một khoá nhất định, Gmail sẽ liên kết khoá đó với ngày not_before có hiệu lực xa nhất trong tương lai làm ngày mặc định khi mã hoá thư gửi cho người dùng được liên kết. Để đảm bảo rằng những người dùng Gmail mà người dùng đã liên lạc sử dụng khoá mặc định mới, hãy đảm bảo rằng khoá mặc định mới có ngày not_before muộn hơn khoá mặc định trước đó hoặc thu hồi khoá mặc định trước đó.
Mã mẫu
Các mã mẫu sau đây cho biết cách sử dụng Gmail API để quản lý chứng chỉ S/MIME cho một tổ chức có nhiều người dùng:
Tạo tài nguyên smimeInfo cho chứng chỉ S/MIME
Mẫu mã này cho biết cách đọc một chứng chỉ từ một tệp, mã hoá chứng chỉ đó thành một chuỗi Base64URL và chỉ định chứng chỉ đó cho trường pkcs12 trên tài nguyên settings.sendAs.smimeInfo:
Java
Python
Tải chứng chỉ S/MIME lên
Để tải một chứng chỉ lên, hãy gọi phương thức settings.sendAs.smimeInfo.insert và cung cấp tài nguyên settings.sendAs.smimeInfo trong phần nội dung của yêu cầu:
Java
Python
Quản lý chứng chỉ của nhiều người dùng
Các mẫu mã này cho thấy cách quản lý chứng chỉ cho nhiều người dùng trong một tổ chức trong một lệnh gọi hàng loạt:
Chèn chứng chỉ từ tệp CSV
Sau đây là một tệp CSV mẫu liệt kê mã nhận dạng người dùng và đường dẫn đến chứng chỉ của từng người dùng:
$ 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
Bạn có thể sử dụng các mẫu CreateSmimeInfo và InsertSmimeInfo để tải chứng chỉ lên cho những người dùng được chỉ định trong tệp CSV:
Python
Bạn có thể sử dụng các mẫu create_smime_info và insert_smime_info để tải chứng chỉ lên cho những người dùng được chỉ định trong tệp CSV:
Quản lý chứng chỉ
Mẫu này kết hợp một số phương thức từ tài nguyên settings.sendAs.smimeInfo để cho biết cách quản lý chứng chỉ cho tổ chức của bạn. Nó liệt kê các chứng chỉ của người dùng. Nếu chứng chỉ mặc định đã hết hạn hoặc chưa được đặt, thì chứng chỉ này sẽ tải chứng chỉ có trong tệp được chỉ định lên. Sau đó, nó sẽ đặt chứng chỉ có thời hạn hết hiệu lực xa nhất trong tương lai làm chứng chỉ mặc định.
Sau đó, hàm này sẽ xử lý một tệp CSV, tương tự như mẫu Chèn chứng chỉ từ tệp CSV trước đó.
Java
Python
Chủ đề có liên quan
- Quản lý biệt hiệu và chữ ký bằng API Gmail
- Chọn các phạm vi của API Gmail
- Bật S/MIME được lưu trữ để mã hoá thư