Bu belgede, Gmail API'de S/MIME e-posta sertifikalarının nasıl kullanılacağı açıklanmaktadır.
Gmail API, bir 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ışması için bir yöneticinin alan için barındırılan S/MIME'yi etkinleştirmesi gerekir.
S/MIME standardı, MIME verilerinin ortak anahtar şifrelemesi ve imzalanması için bir spesifikasyon sağlar. S/MIME sertifikaları bir kullanıcı hesabında yapılandırıldığında Gmail bunları aşağıdaki şekillerde kullanır:
Giden postaları kullanıcı sertifikası ve özel anahtarla imzalayın.
Gelen postanın şifresini kullanıcının özel anahtarıyla çözün.
Giden postaları alıcı sertifikası ve ortak anahtarla şifreleyin.
Gelen postayı gönderen sertifikası ve ortak anahtarla doğrulayın.
Gmail API'yi kullanarak ayrı S/MIME sertifikaları oluşturabilir ve bunları yükleyebilirsiniz. Her S/MIME sertifikası, bir kullanıcı e-posta hesabının belirli bir takma adı içindir. Takma adlar, birincil e-posta adresini ve özel "Şu Adresten Gönder" adreslerini içerir. API, her bir takma ad için tek bir S/MIME sertifikasını varsayılan olarak işaretler.
Takma adlar hakkında daha fazla bilgi için Gmail API ile takma adları ve imzaları yönetme başlıklı makaleyi inceleyin.
API erişimini yetkilendirme
Gmail API'ye erişimi yetkilendirmek için aşağıdaki yöntemlerden birini kullanın:
Alan genelinde yetki devri olan bir hizmet hesabı kullanın. Bu terimlerin açıklaması için Kimlik doğrulama ve yetkilendirme hakkında bilgi başlıklı makaleyi inceleyin. Bu seçeneği etkinleştirmek için Erişim kimlik bilgileri oluşturma başlıklı makaleye bakın.
OAuth 2.0 erişim jetonu almak için son kullanıcının iznini gerektiren standart bir OAuth 2.0 akışı kullanın. Daha fazla bilgi için Kimlik doğrulama ve yetkilendirme hakkında bilgi başlıklı makaleyi inceleyin.
Bu seçeneği kullanmak için alan yöneticisinin Google Yönetici Konsolu'nda E-posta gönderme ve alma için S/MIME şifrelemesini etkinleştir onay kutusunu işaretlemesi gerekir. Daha fazla bilgi için Google Yönetici Konsolunuzda barındırılan S/MIME özelliğini etkinleştirme başlıklı makaleyi inceleyin.
EKL kapsamları
Gmail API, Gmail sendAs yöntemleriyle aynı ACL kapsamlarını kullanır:
gmail.settings.basic: Bu kapsam, birincil S/MIME'yi güncellemek için gereklidir.SendAsgmail.settings.sharing: Bu kapsam, özel S/MIME gönderen adresini güncellemek için gereklidir.
S/MIME anahtarlarını yapılandırma
settings.sendAs.smimeInfo kaynağı, S/MIME sertifikalarını yönetmek için çeşitli yöntemler sunar. Her sertifika, bir kullanıcının "farklı gönder" takma adıyla ilişkilendirilir.
Bir kullanıcının farklı gönderen olarak kullandığı takma adları belirlemek için settings.sendAs kaynağında settings.sendAs.list yöntemini kullanın.
S/MIME anahtarı yükleme
Bir kullanıcıya ait olan bir takma ad için yeni bir S/MIME anahtarı yüklemek üzere settings.sendAs.smimeInfo kaynağında settings.sendAs.smimeInfo.insert yöntemini kullanın. Aşağıdaki yol parametrelerini kullanarak hedef takma adını belirleyin:
userId: Kullanıcının e-posta adresi. Kimliği doğrulanmış kullanıcıyı belirtmek içinmeözel değerini kullanın.sendAsEmail: Anahtarı yüklediğiniz takma ad. Bu e-posta adresi, bu takma ad kullanılarak gönderilen postalarınFrom:üstbilgisinde görünür.
S/MIME sertifikası ve özel anahtar, bu biçimde pkcs12 alanında bulunmalıdır. İsteğe başka alanlar ayarlanmamalıdır. pkcs12
alanı, hem kullanıcı S/MIME anahtarını hem de imza sertifikası zincirini içerir. 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), Google'ın güvenilir listesinde olmalı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ı bir settings.sendAs.smimeInfo.insert yöntem çağrısı, gelecekte anahtara başvurmak için kullanılan settings.sendAs.smimeInfo kaynağı id 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 settings.sendAs.smimeInfo kaynağında settings.sendAs.smimeInfo.list yöntemini kullanın. Aşağıdaki yol parametrelerini kullanarak hedef takma adı belirleyin:
userId: Kullanıcının e-posta adresi. Kimliği doğrulanmış kullanıcıyı belirtmek içinmeözel değerini kullanın.sendAsEmail: Anahtarların listeleneceği takma ad. Bu e-posta adresi, bu takma ad kullanılarak gönderilen postalarınFrom:üstbilgisinde görünür.
Bir diğer ad için S/MIME anahtarlarını alma
Bir kullanıcının belirli bir "farklı gönder" takma adı için belirli S/MIME anahtarlarını döndürmek üzere settings.sendAs.smimeInfo kaynağında settings.sendAs.smimeInfo.get yöntemini kullanın. Aşağıdaki yol parametrelerini kullanarak hedef takma adı belirleyin:
userId: Kullanıcının e-posta adresi. Kimliği doğrulanmış kullanıcıyı belirtmek içinmeözel değerini kullanın.sendAsEmail: Anahtarları aldığınız takma ad. Bu e-posta adresi, bu takma ad kullanılarak gönderilen postalarınFrom:üstbilgisinde görünür.
S/MIME anahtarını silme
Belirtilen S/MIME anahtarını bir takma adından silmek için settings.sendAs.smimeInfo kaynağında settings.sendAs.smimeInfo.delete yöntemini kullanın. Aşağıdaki yol parametrelerini kullanarak hedef takma adı belirleyin:
userId: Kullanıcının e-posta adresi. Kimliği doğrulanmış kullanıcıyı belirtmek içinmeözel değerini kullanın.sendAsEmail: Anahtarlarını sildiğiniz takma ad. Bu e-posta adresi, bu takma ad kullanılarak gönderilen postalarınFrom:üstbilgisinde görünür.id:smimeInfoiçin değişmez kimlik.
Bir takma ad için varsayılan S/MIME anahtarını ayarlama
Belirtilen S/MIME anahtarını belirtilen takma ad için varsayılan olarak işaretlemek üzere settings.sendAs.smimeInfo kaynağında settings.sendAs.smimeInfo.setDefault yöntemini kullanın. Aşağıdaki yol parametrelerini kullanarak hedef takma adı belirleyin:
userId: Kullanıcının e-posta adresi. Kimliği doğrulanmış kullanıcıyı belirtmek içinmeözel değerini kullanın.sendAsEmail: Hangi anahtarların varsayılan olarak ayarlanacağıyla ilgili takma ad. Bu e-posta adresi, bu takma ad kullanılarak gönderilen postalarınFrom:üstbilgisinde görünür.id:smimeInfoiçin değişmez kimlik.
Kod örnekleri
Aşağıdaki kod örneklerinde, birden fazla kullanıcısı olan bir kuruluşun S/MIME sertifikalarını yönetmek için Gmail API'nin nasıl kullanılacağı gösterilmektedir:
S/MIME sertifikası için smimeInfo kaynağı oluşturma
Bu kod örneğinde, bir sertifikanın dosyadan nasıl okunacağı, Base64URL dizesine nasıl kodlanacağı ve settings.sendAs.smimeInfo kaynağındaki pkcs12 alanına nasıl atanacağı gösterilmektedir:
Java
Python
S/MIME sertifikası yükleme
Sertifika yüklemek için settings.sendAs.smimeInfo.insert yöntemini çağırın ve isteğin gövdesinde settings.sendAs.smimeInfo kaynağını sağlayın:
Java
Python
Birden fazla kullanıcının sertifikalarını yönetme
Bu kod örnekleri, bir kuruluşta birden fazla kullanıcının sertifikalarının tek bir toplu çağrıyla nasıl yönetileceğini gösterir:
CSV dosyasından sertifika ekleme
Aşağıda, kullanıcı kimliklerini ve her kullanıcının sertifikasının yolunu listeleyen örnek bir CSV dosyası verilmiştir:
$ 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 dosyasında belirtilen kullanıcıların sertifikalarını yüklemek için CreateSmimeInfo ve InsertSmimeInfo örneklerini kullanabilirsiniz:
Python
CSV dosyasında belirtilen kullanıcıların sertifikalarını yüklemek için create_smime_info ve insert_smime_info örneklerini kullanabilirsiniz:
Sertifika yönetimi
Bu örnekte, kuruluşunuzun sertifikalarını nasıl yöneteceğinizi göstermek için settings.sendAs.smimeInfo kaynağındaki çeşitli yöntemler birleştirilmiştir. Kullanıcının sertifikalarını listeler. 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 işlev, önceki CSV dosyasından sertifika ekleme örneğine benzer şekilde bir CSV dosyasını işler.
Java
Python
İlgili konular
- Gmail API ile takma adları ve imzaları yönetme
- Gmail API kapsamlarını seçme
- İleti şifreleme için barındırılan S/MIME özelliğini etkinleştirme