Bu belgede, S/MIME e-posta sertifikalarının Gmail API ile nasıl kullanılacağı açıklanmaktadır.
Gmail 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ış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. Bir kullanıcı hesabı için S/MIME sertifikalarını yapılandırdığınızda Gmail bunları şu ş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 anahtarıyla ş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 "Farklı 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 kullanıcı izni 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 Yönetici Konsolunuzda barındırılan S/MIME özelliğini etkinleştirme başlıklı makaleyi inceleyin.
Yetkilendirme kapsamları
Gmail API, Gmail sendAs yöntemleriyle aynı OAuth kapsamlarını kullanır:
gmail.settings.basic: BirincilSendAsS/MIME'yi güncellemek için gereklidir.gmail.settings.sharing: Özel from S/MIME'yi 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ı adres olarak gönderdiği 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 diğer 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ı 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ını ve özel anahtarı PKCS #12 biçiminde pkcs12 alanında sağlayın. İstekle ilgili başka alan ayarlamayın. pkcs12 alanı hem kullanıcı S/MIME anahtarını hem de imzalama 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 şifreyi encryptedKeyPassword alanına girin. 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ğını 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 takma 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: Anahtarı 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.
Silinen anahtarlar artık görünmez veya kullanılamaz. İlgili ortak anahtar kullanılarak şifrelenmiş S/MIME e-postalarının şifresini çözemezsiniz. Bir anahtarı silmeden önce, veren yetkili (CA) ile iptal edin.
Bir diğer 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: Varsayılan anahtarın ayarlanacağı 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 kullanıcının "farklı gönder" takma adı için yalnızca bir S/MIME anahtarı varsayılandır. settings.sendAs.smimeInfo.setDefault yöntemini çağırmak önceki varsayılanı kaldırır.
Bir kullanıcı, belirli bir anahtarla imzalanmış S/MIME iletileri aldığında Gmail, ilişkili kullanıcıya gönderilen postaları şifrelerken anahtarı varsayılan olarak gelecekteki en uzak not_before geçerlilik tarihiyle
ilişkilendirir. Kullanıcının daha önce iletişim kurduğu Gmail kullanıcılarının yeni varsayılan anahtarı kullanmasını sağlamak için yeni varsayılan anahtarın not_before tarihinin önceki varsayılan anahtardan daha sonraki bir tarih olduğundan emin olun veya önceki varsayılan anahtarı iptal edin.
Kod örnekleri
Aşağıdaki kod örneklerinde, Gmail API'yi kullanarak birden fazla kullanıcısı olan bir kuruluşun S/MIME sertifikalarının nasıl yönetileceği 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 sertifika yüklenir. 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'si 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