Gmail S/MIME API, Google Workspace alanındaki kullanıcıların S/MIME e-posta sertifikalarını yönetmek için programatik erişim sağlar.
Sertifikaların çalışabilmesi için bir yöneticinin alan için S/MIME'yi etkinleştirmesi gerekir.
S/MIME standardı, MIME verilerinin ortak anahtar şifrelemesi ve imzalanması için bir spesifikasyon sağlar. Kullanıcı hesabında S/MIME sertifikalarının yapılandırılması, Gmail'in bu sertifikayı aşağıdaki şekillerde kullanmasına neden olur:
- Gmail, giden postaları imzalamak için kullanıcının sertifikasını ve özel anahtarını kullanır.
- Gmail, gelen postaların şifresini çözmek için kullanıcının özel anahtarını kullanır.
- Gmail, giden postaları şifrelemek için alıcının sertifikasını ve ortak anahtarını kullanır.
- Gmail, gelen postaları doğrulamak için gönderenin sertifikasını ve ortak anahtarını kullanır.
Ayrı S/MIME sertifikaları oluşturup API'yi kullanarak bunları yüklersiniz. Her S/MIME sertifikası, kullanıcı e-posta hesabının belirli bir diğer adı içindir. Takma adlar, birincil e-posta adresinin yanı sıra özel "Şu Adresten Gönder" adreslerini de içerir. Her takma ad için tek bir S/MIME sertifikası varsayılan olarak işaretlenir.
API erişimini yetkilendirme
API'ye erişimi yetkilendirmenin iki yolu vardır:
- Alan genelinde yetki devri olan bir hizmet hesabı kullanabilirsiniz. Bu terimlerin açıklaması için Kimlik doğrulama ve yetkilendirmeye genel bakış terimleri başlıklı makaleyi inceleyin. Bu seçeneği etkinleştirme hakkında bilgi edinmek için Alan genelinde yetki devriyle hizmet hesabı oluşturma başlıklı makaleyi inceleyin.
- OAuth2 erişim jetonu almak için son kullanıcı izni gerektiren standart bir OAuth2 akışı kullanabilirsiniz. Daha fazla bilgi için Kimlik doğrulama ve yetkilendirmeye genel bakış başlıklı makaleyi inceleyin. Bu seçeneği kullanmak için alan yöneticisinin, alan kontrol panelinde "S/MIME API son kullanıcı erişimi etkin" onay kutusunu işaretlemesi gerekir.
EKL kapsamları
Bu API, Gmail sendAs yöntemleriyle aynı ACL kapsamlarını kullanır:
- gmail.settings.basic
- Bu kapsam, birincil SendAs S/MIME'nin güncellenmesi için gereklidir.
- gmail.settings.sharing
- Bu kapsam, S/MIME'den özel from alanını güncellemek için gereklidir.
API'yi kullanma
users.settings.sendAs.smimeInfo kaynağı, S/MIME sertifikalarını yönetmek için kullandığınız yöntemleri sağlar. Her sertifika, bir kullanıcının "farklı gönder" takma adıyla ilişkilendirilir.
S/MIME anahtarı yükleme
Bir kullanıcıya ait olan bir takma ad için yeni bir S/MIME anahtarı yüklemek üzere smimeInfo.insert() yöntemini kullanın. Aşağıdaki parametreleri kullanarak hedef takma adı tanımlarsınız:
- userId
- Kullanıcının e-posta adresi. Şu anda kimliği doğrulanmış kullanıcıyı belirtmek için
me
özel değerini kullanabilirsiniz. - sendAsEmail
- Anahtarı yüklediğiniz takma ad. Bu, bu takma ad kullanılarak gönderilen postaların "From:" üstbilgisinde görünen e-posta adresidir.
S/MIME sertifikası ve özel anahtar, bu biçimde pkcs12
alanında bulunmalıdır. İsteğin başka hiçbir alanı ayarlanmamalıdır. PKCS12 alanının hem kullanıcı S/MIME anahtarını
hem de imzalama sertifikası zincirini içermesi beklenir. API, bu alanı kabul etmeden önce üzerinde standart doğrulamalar gerçekleştirerek aşağıdakileri doğrular:
- Konu, belirtilen e-posta adresiyle eşleşiyor.
- Son kullanma tarihleri geçerlidir.
- Sertifikayı veren sertifika yetkilisi (CA), güvenilir listemizde yer almalıdır.
- Sertifikalar, Gmail'in teknik kısıtlamalarıyla eşleşmelidir.
Anahtar şifrelenmişse şifre encryptedKeyPassword
alanında olmalıdır. Başarılı insert() çağrıları, gelecekte anahtara başvurmak için kullanılabilecek smimeInfo'nun kimliğini döndürür.
Kullanıcının S/MIME anahtarlarını listeleme
Belirli bir kullanıcı için belirli bir takma adın S/MIME anahtarlarının listesini döndürmek üzere smimeInfo.list() yöntemini kullanın. Aşağıdaki parametreleri kullanarak hedef takma adı tanımlarsınız:
- userId
- Kullanıcının e-posta adresi. Şu anda kimliği doğrulanmış kullanıcıyı belirtmek için
me
özel değerini kullanabilirsiniz. - sendAsEmail
- Anahtarların listeleneceği takma ad. Bu, bu takma ad kullanılarak gönderilen postaların "From:" üstbilgisinde görünen e-posta adresidir.
Bir diğer ad için S/MIME anahtarlarını alma
Bir kullanıcının belirli bir "farklı bir adresle gönder" takma adı için belirli S/MIME anahtarlarını döndürmek üzere smimeInfo.get() yöntemini kullanın. Aşağıdaki parametreleri kullanarak hedef takma adı tanımlarsınız:
- userId
- Kullanıcının e-posta adresi. Şu anda kimliği doğrulanmış kullanıcıyı belirtmek için
me
özel değerini kullanabilirsiniz. - sendAsEmail
- Anahtarları aldığınız takma ad. Bu, bu takma ad kullanılarak gönderilen postaların "From:" üstbilgisinde görünen e-posta adresidir.
S/MIME anahtarını silme
Belirtilen S/MIME anahtarını bir takma addan silmek için smimeInfo.delete() yöntemini kullanın. Aşağıdaki parametreleri kullanarak hedef takma adı tanımlarsınız:
- userId
- Kullanıcının e-posta adresi. Şu anda kimliği doğrulanmış kullanıcıyı belirtmek için
me
özel değerini kullanabilirsiniz. - sendAsEmail
- Anahtarları aldığınız takma ad. Bu, bu takma ad kullanılarak gönderilen postaların "From:" üstbilgisinde görünen e-posta adresidir.
- id
- SmimeInfo için sabit kimlik.
Bir takma ad için varsayılan S/MIME anahtarını ayarlama
Belirtilen S/MIME anahtarını belirtilen diğer ad için varsayılan olarak işaretlemek üzere smimeInfo.setDefault() yöntemini kullanın. Aşağıdaki parametreleri kullanarak hedef takma adı tanımlarsınız:
- userId
- Kullanıcının e-posta adresi. Şu anda kimliği doğrulanmış kullanıcıyı belirtmek için
me
özel değerini kullanabilirsiniz. - sendAsEmail
- Anahtarları aldığınız takma ad. Bu, bu takma ad kullanılarak gönderilen postaların "From:" üstbilgisinde görünen e-posta adresidir.
- id
- SmimeInfo için sabit kimlik.
Örnek kod
Aşağıdaki kod örnekleri, API'yi kullanarak birden fazla kullanıcısı olan bir kuruluş için S/MIME sertifikalarının nasıl yönetileceğini gösterir.
S/MIME sertifikası için SmimeInfo kaynağı oluşturma
Aşağıdaki kod örneğinde, bir sertifikayı dosyadan okuma, Base64url dizesine kodlama ve smimeInfo
kaynağının pkcs12
alanına atama işlemleri gösterilmektedir:
Java
Python
S/MIME sertifikası yükleme
Sertifika yüklemek için smimeInfo.insert
işlevini çağırın ve isteğin gövdesinde smimeInfo
kaynağını sağlayın:
Java
Python
Birçok kullanıcının sertifikalarını yönetme örnekleri
Kuruluştaki birçok kullanıcının sertifikalarını aynı anda yönetmek isteyebilirsiniz. Aşağıdaki örneklerde, tek bir toplu çağrıda birden fazla kullanıcının sertifikalarının nasıl yönetileceği gösterilmektedir.
CSV dosyasından sertifika ekleme
Kullanıcı kimliklerini ve her kullanıcının sertifikasının yolunu listeleyen bir CSV dosyanız olduğunu varsayalım:
$ 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
Sertifikaları CSV dosyasında belirtildiği şekilde yüklemek için önceki createSmimeInfo
ve insertSmimeInfo
çağrılarını kullanabilirsiniz:
Python
Sertifikaları CSV dosyasında belirtildiği şekilde yüklemek için önceki create_smime_info
ve insert_smime_info
çağrılarını kullanabilirsiniz:
Sertifika yönetimi
Bu örnekte, kuruluşunuzun sertifikalarını nasıl yönetebileceğinizi göstermek için smimeInfo
API'den gelen çeşitli çağrılar birleştirilmektedir. Kullanıcı sertifikalarını listeler ve varsayılan sertifikanın süresi dolmuşsa veya ayarlanmamışsa belirtilen dosyada bulunan sertifikayı yükler. Ardından, geçerlilik süresi en uzun olan sertifikayı varsayılan olarak ayarlar.
Bu, önceki örnekte olduğu gibi bir CSV dosyasını işleyen bir işlevden çağrılır.