В этом документе объясняется, как использовать S/MIME-сертификаты электронной почты в API Gmail.
API Gmail предоставляет программный доступ к управлению сертификатами электронной почты S/MIME для пользователей в домене Google Workspace.
Для корректной работы сертификатов администратор должен включить поддержку S/MIME для данного домена .
Стандарт S/MIME предоставляет спецификацию для шифрования и подписи MIME-данных с использованием открытого ключа. Когда в учетной записи пользователя настроены сертификаты S/MIME, Gmail использует их следующим образом:
Подписывайте исходящие письма с помощью пользовательского сертификата и закрытого ключа.
Расшифруйте входящие письма с помощью закрытого ключа пользователя.
Шифрование исходящей почты с помощью сертификата получателя и открытого ключа.
Проверяйте входящую почту с помощью сертификата отправителя и открытого ключа.
Вы можете генерировать отдельные S/MIME-сертификаты и загружать их с помощью API Gmail. Каждый S/MIME-сертификат предназначен для определенного псевдонима учетной записи электронной почты пользователя. Псевдонимы включают основной адрес электронной почты и пользовательские адреса «Отправлять как». API помечает один S/MIME-сертификат как сертификат по умолчанию для каждого псевдонима.
Для получения дополнительной информации о псевдонимах см. раздел «Управление псевдонимами и подписями с помощью API Gmail» .
Авторизация доступа к API
Для авторизации доступа к API Gmail используйте один из следующих способов:
Используйте служебную учетную запись с делегированием полномочий в масштабах всего домена . Пояснение к этим терминам см. в разделе «Узнайте больше об аутентификации и авторизации» . Чтобы включить эту опцию, см. раздел «Создание учетных данных доступа» .
Используйте стандартный процесс OAuth 2.0, требующий согласия конечного пользователя для получения токена доступа OAuth 2.0. Для получения дополнительной информации см. раздел «Подробнее об аутентификации и авторизации» .
Для использования этой опции администратор домена должен установить флажок «Включить шифрование S/MIME для отправки и получения электронных писем» в консоли администратора Google. Дополнительную информацию см. в разделе «Включение размещенного S/MIME в консоли администратора Google» .
Области действия ACL
API Gmail использует те же области действия ACL , что и методы sendAs в Gmail :
gmail.settings.basic: Эта область действия необходима для обновления основного S/MIME-SendAs.gmail.settings.sharing: Эта область действия необходима для обновления пользовательских настроек из S/MIME.
Настройка ключей S/MIME
Ресурс settings.sendAs.smimeInfo предоставляет несколько методов для управления сертификатами S/MIME. Каждому сертификату присваивается один псевдоним для отправки сообщений пользователю.
Чтобы определить псевдонимы для отправки сообщений пользователю, используйте метод settings.sendAs.list ресурса settings.sendAs .
Загрузите ключ S/MIME.
Используйте метод settings.sendAs.smimeInfo.insert ресурса settings.sendAs.smimeInfo для загрузки нового S/MIME-ключа для псевдонима, принадлежащего пользователю. Укажите целевой псевдоним, используя следующие параметры пути:
userId: Адрес электронной почты пользователя. Используйте специальное значениеmeдля обозначения авторизованного пользователя.sendAsEmail: Псевдоним, для которого вы загружаете ключ. Этот адрес электронной почты отображается в заголовкеFrom:для писем, отправленных с использованием этого псевдонима.
Сертификат S/MIME и закрытый ключ должны присутствовать в поле pkcs12 в указанном формате; никакие другие поля в запросе задаваться не должны. Поле pkcs12 содержит как ключ S/MIME пользователя, так и цепочку сертификатов подписи. Перед принятием запроса API выполняет стандартную проверку этого поля, проверяя следующее:
- Тема письма соответствует указанному адресу электронной почты.
- Срок действия истекает.
- Центр сертификации (CA), выдавший сертификат, входит в список доверенных центров Google.
- Сертификаты соответствуют техническим ограничениям Gmail.
Если ключ зашифрован, пароль должен находиться в поле encryptedKeyPassword . Успешный вызов метода settings.sendAs.smimeInfo.insert возвращает id ресурса settings.sendAs.smimeInfo , который будет использоваться для ссылки на ключ в будущем.
Вывести список 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
Для удаления указанного ключа S/MIME из псевдонима используйте метод settings.sendAs.smimeInfo.delete ресурса settings.sendAs.smimeInfo . Укажите целевой псевдоним, используя следующие параметры пути:
userId: Адрес электронной почты пользователя. Используйте специальное значениеmeдля обозначения авторизованного пользователя.sendAsEmail: Псевдоним, для которого вы удаляете ключи. Этот адрес электронной почты отображается в заголовкеFrom:для писем, отправленных с использованием этого псевдонима.id: Неизменяемый идентификатор дляsmimeInfo.
Установите ключ S/MIME по умолчанию для псевдонима.
Используйте метод settings.sendAs.smimeInfo.setDefault ресурса settings.sendAs.smimeInfo , чтобы пометить указанный ключ S/MIME как ключ по умолчанию для указанного псевдонима. Укажите целевой псевдоним, используя следующие параметры пути:
userId: Адрес электронной почты пользователя. Используйте специальное значениеmeдля обозначения авторизованного пользователя.sendAsEmail: Псевдоним, для которого следует установить ключи по умолчанию. Этот адрес электронной почты отображается в заголовкеFrom:для писем, отправляемых с использованием этого псевдонима.id: Неизменяемый идентификатор дляsmimeInfo.
Примеры кода
Приведенные ниже примеры кода демонстрируют, как использовать API Gmail для управления 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
Для загрузки сертификатов пользователей, указанных в CSV-файле, можно использовать примеры CreateSmimeInfo и InsertSmimeInfo :
Python
Для загрузки сертификатов для пользователей, указанных в CSV-файле, можно использовать примеры функций create_smime_info и insert_smime_info :
Управление сертификатами
Этот пример объединяет несколько методов из ресурса settings.sendAs.smimeInfo , чтобы показать, как управлять сертификатами для вашей организации. Он отображает список сертификатов для пользователя. Если срок действия сертификата по умолчанию истек или он не установлен, он загружает сертификат, найденный в указанном файле. Затем он устанавливает сертификат, срок действия которого истекает в наиболее отдаленном будущем, в качестве сертификата по умолчанию.
Затем эта функция обрабатывает CSV-файл, аналогично предыдущему примеру "Вставка сертификатов из CSV-файла" .
Java
Python
Связанные темы
- Управляйте псевдонимами и подписями с помощью API Gmail.
- Выберите области действия API Gmail.
- Включите шифрование сообщений с помощью S/MIME.