Sertifikalar (SSL/TLS)¶
Sunucularınızın web, posta ve proxy sertifikalarını tek ekrandan izler; Let's Encrypt sertifikasını otomatik alıp yeniler, kendinden imzalı veya ticari sertifika kurar, CSR üretir ve her domain için ayrı sertifika tanımlarsınız.
Global yöneticiYönetici konsolu › Araçlar ve Geçiş › Sertifikalar
Durum panosu¶
- Sol ağaçta Araçlar ve Geçiş › Sertifikalar'a tıklayın. Sayfa hemen açılır; liste sunucudan okunurken birkaç saniye bekleyin.
- Başlıkta sık kullanılan üç işlem durur: Let's Encrypt, Hazır sertifika yükle ve Domain sertifikası. Diğer araçlar Diğer menüsündedir: Wildcard SSL içeri aktar, Kur / CSR, CSR göster, Proxy CA ve Yenile. Menü dışarı tıklayınca veya Esc ile kapanır. Yenile konsolun üst çubuğunda da bulunur.
- Sayaç kartları Toplam, Geçerli, Süresi doluyor (30 gün) ve Süresi dolmuş sertifika sayısını gösterir. Kartın üstündeki renk şeridi durumu belirtir (yeşil geçerli, sarı süresi doluyor, kırmızı süresi dolmuş); sayı sıfırdan büyükse kart vurgulanır.
- Altta Let's Encrypt kartları (bkz. Durum ve bildirimler) ve Sunucu TLS sertifikaları tablosu yer alır. Tabloda her sunucu için ldap, mailboxd, mta ve proxy sertifikasının konusu, vereni, bitiş tarihi ve durumu listelenir. Tablo Zimbra'nın sertifika servisi (
zmcertmgr) her sunucuyu okuyunca dolar; çok sunuculu kurulumda bu bir dakikayı bulabilir.
Şekildeki numaralar: 1 menüdeki Sertifikalar, 2 başlık düğmeleri, 3 açık Diğer menüsü, 4 sayaç kartları.

Ticari veya wildcard sertifika kurmak¶
Kurmadan önce her bileşen ayrı ayrı test edilir; hata varsa Tamam düğmesi açılmaz.
- Diğer menüsünden Wildcard SSL içeri aktar'ı seçin. Sertifika kur penceresi İşlem: Ticari / wildcard içeri aktar seçili olarak açılır.
- Sertifika PEM (CA'nın gönderdiği paket olabilir), Özel anahtar PEM ve CA zinciri PEM alanlarını doldurun.
- Test et'e basın. Test sonucu dört başlıkta Tamam / Uyarı / Hata olarak listelenir:
- Sertifika: okunuyor mu, tarihleri, adın SAN'da olup olmadığı.
- Özel anahtar: biçimi ve sertifikayla eşleşmesi.
- CA zinciri: sıra (yaprak → ara → kök) ve tarihler.
- Sunucu kontrolü: sunucuda
zmcertmgrile doğrulama.
- Hiç Hata yoksa Tamam'a basın. Sertifika kurulur, liste yenilenir.
- Servislerin yeni sertifikayı kullanması için sunucuda zimbra kullanıcısıyla
zmcontrol restartçalıştırın.

Paket ve anahtar biçimleri
Sertifika alanına yaprak, ara ve kök sertifikayı herhangi bir sırayla yapıştırabilirsiniz; zincir otomatik dizilir. RSA veya EC anahtar (PKCS#1, PKCS#8, SEC1) okunur. Parolalı anahtarı önce açın: openssl pkey -in key.pem -out key-acik.pem.
Anahtar başka makinede üretildiyse
Zimbra kurulumda diskteki anahtarı kullanır. Test bu durumda Uyarı verir; Anahtarı sunucuya yükle kutusunu işaretleyince anahtar sunucuya yazılır (öncekinin yedeği alınır) ve kurulum yapılır.
CSR üretmek¶
Diğer menüsünden Kur / CSR'ı seçin ve İşlem olarak Yalnız CSR üret'i seçin; CN ve Subject Alt Names alanlarını doldurup Tamam'a basın. Üretilen PEM metnini sertifika sağlayıcınıza gönderin. CA'dan gelen sertifikayı yukarıdaki adımlarla kurun.
Kendinden imzalı sertifika¶
Test ortamları için Kur / CSR penceresinde İşlem olarak Kendinden imzalı'yı seçip CN ve Subject Alt Names alanlarını doldurun. Tarayıcılar bu sertifikada uyarı gösterir; canlı ortamda ticari sertifika kullanın.
Her domain için ayrı sertifika¶
Birden fazla domain barındırıyorsanız her domain kendi adresinde (örneğin zpe.profelis.net) kendi sertifikasını sunabilir. Tarayıcı bağlanırken istediği adı bildirir (SNI); proxy o adın domain sertifikasını verir. Sertifikası olmayan adreslerde sunucu sertifikası kullanılmaya devam eder.
- Başlıktaki Domain sertifikası'na tıklayın. Pencere, seçili domainin Mevcut sertifika bilgisini gösterir.
- Domain listesinden domaini seçin ve Sanal host adı alanına kullanıcıların bağlandığı adı yazın (ör.
mail.zpe.profelis.net). Domainde kayıtlı bir ad varsa alan dolu gelir. - Birden fazla domain aynı proxy IP'sini paylaşıyorsa ya da adın DNS kaydı bu proxy'yi göstermiyorsa o IP'yi Sanal IP adresi alanına yazın (
zimbraVirtualIPAddressolarak kaydedilir). Aksi halde boş bırakın: nginx adın çözüldüğü adreste dinler. - Sertifika PEM, Özel anahtar PEM ve CA zinciri PEM alanlarını yapıştırın.
- Tamam'a basın. Kaydetmeden önce şunlar denetlenir; biri tutmazsa hiçbir şey kaydedilmez:
- anahtar sertifikaya ait mi,
- ara sertifika eksik mi,
- sertifika sanal host adını kapsıyor mu (SAN; yoksa CN;
*.alangeçerlidir), - süresi dolmuş mu.

Sertifika domainin kendisine kaydedilir. Sanal host adı veya sanal IP domainde yoksa eklenir; mevcut değerler silinmez. zimbraReverseProxySNIEnabled kapalıysa global olarak açılır ve mesajda belirtilir. Bu pencereden PEM ile kaydedilen sertifikayı her proxy sunucusunda zimbra kullanıcısıyla etkinleştirin ve diğer domainler için aynı adımları tekrarlayın (Let's Encrypt ve Hazır sertifika yükle ile kurulan domain sertifikalarında bu adım kendiliğinden yapılır; bkz. aşağıda):
/opt/zimbra/libexec/zmdomaincertmgr deploycrts
zmproxyctl restart
Yeniden başlatmadan sonra pencereyi tekrar açıp Sunulan sertifikayı kontrol et'e tıklayın. Mailbox sunucusu sanal host adına (girildiyse sanal IP üzerinden) HTTPS ve SNI ile bağlanır ve sonucu Sunulan sertifika alanında gösterir:
- Tamam: sunulan sertifika adı kapsıyor; bitiş tarihi gösterilir.
- Uyuşmuyor: başka bir sertifika sunuluyor (çoğunlukla sunucu sertifikası). Proxy'nin yeniden başlatıldığını, SNI'ı ve sanal IP'yi kontrol edin.
- Süresi dolmuş veya nedeniyle birlikte bağlantı hatası.
Komut satırından: openssl s_client -connect <proxy>:443 -servername zpe.profelis.net </dev/null | openssl x509 -noout -subject -enddate
Ön koşullar
zimbraReverseProxySNIEnabled TRUE olmalıdır (pencere açar). Her sanal host adının DNS kaydı proxy'yi göstermeli ya da domainde Sanal IP adresi tanımlı olmalıdır. Domain sertifikasının anahtarı sunucu CSR'ından bağımsızdır. SMTP (465/587) her zaman sunucu sertifikasını sunar; SNI HTTPS ve IMAPS/POP3S'i kapsar.
Let's Encrypt ile otomatik sertifika¶
Sunucu sertifikasını (proxy, MTA) veya bir domainin sertifikasını Let's Encrypt'ten ücretsiz alır ve süresi dolmadan kendiliğinden yenilersiniz. Sertifika mailbox sunucusundaki Profelis uzantısı tarafından alınır; sunuculara ek paket kurulmaz, 80 portu ve HTTP'den HTTPS'e yönlendirme değiştirilmez.
- Başlıktaki Let's Encrypt düğmesine tıklayın; Let's Encrypt (otomatik) penceresi açılır. Yapılandırılmış bir hedefi değiştirmek için kartındaki Düzenle'yi kullanın.
- E-posta alanına Let's Encrypt hesap adresini yazın. Bildirimler başka adrese gidecekse Bildirimler LE adresine kutusunu kaldırıp Bildirim adresi'ni doldurun.
- İsimler alanına sertifikada bulunacak adları her satıra bir tane yazın (ör.
mail.zpe.profelis.net). En fazla 100 ad girilebilir. - Doğrulama yöntemi'ni seçin (aşağıda ayrıntı): HTTP-01 (80 portu), DNS (elle TXT) veya DNS (RFC2136 dinamik güncelleme).
- Düğümler listesinde sertifikanın kurulacağı sunucuları işaretleyin (parantez içinde rolleri yazar).
- Restart modunu ve otomatikse Restart saati'ni seçin.
- Ön kontrol'e basın. Her ad için DNS ve (HTTP-01'de) 80 portu erişimi denetlenir; hiçbir şey kaydedilmez.
- Kaydet ve etkinleştir'e basın. Sipariş bir dakika içinde başlar; ilerlemeyi ekrandaki Let's Encrypt bölümünden izleyin.

Yeni sertifika alınıp sunucuda zmcertmgr verifycrt ile doğrulanana kadar mevcut sertifika yerinde kalır. Kurulum bir düğümde başarısız olursa o düğümde önceki sertifika geri konur.
Anahtar tipi (gelişmiş ayarlar) varsayılan olarak RSA 4096'dır; RSA 2048 ve EC P-256 de seçilebilir.
Hangi düğümler sertifika alır¶
Varsayılan olarak yalnız dışa açık roller (proxy ve MTA sunucuları) içinden, adı sertifika adlarında geçenler (tam ad ya da *. joker) seçilidir. Örneğin adlar alti.ornek.tr, sunucular alti ve bes ise yalnız alti seçilir. Hiçbiri eşleşmezse yerel sunucu seçilir. Seçili düğümler listedeki adları içeren sertifikayı alır; ortak bir ad (ör. mail.ornek.tr) kullanıyorsanız düğümleri elle işaretleyin. LDAP ve iç mailbox sunucuları mevcut sertifikalarını korur.
İç adlar
Let's Encrypt yalnız internette çözülen adlara sertifika verir; ldap1.lan gibi iç adlar sertifikaya giremez. Sunucular birbirine iç adlarla bağlanıyorsa (LDAP starttls, LMTP, proxy'den mailbox'a) o sunucuları dahil etmeyin; aksi halde sunucular arası TLS ad uyuşmazlığıyla bozulur. Dahil edilmeyen düğümler listede Dahil değil görünür.
Doğrulama yöntemleri¶
HTTP-01 (80 portu). Let's Encrypt her ad için http://<ad>/.well-known/acme-challenge/<token> adresini çağırır. Proxy 80'deki isteği HTTPS'e yönlendirir; Let's Encrypt yönlendirmeyi izler ve bu aşamada sertifika güvenini denetlemez, bu yüzden süresi dolmuş veya kendinden imzalı sertifika da sorun olmaz. İstek mailbox'ta Profelis uzantısına ulaşır ve token hangi mailbox sunucusuna düşerse düşsün LDAP'tan cevaplanır. Koşullar:
- Her ad DNS'te bu kurulumu (proxy'yi) göstermeli ve 80 portu internetten açık olmalı.
- Proxy'nin
zimbraReverseProxyMailModedeğeriredirect,bothveyahttpolmalı;httpsmodunda 80 kapalıdır. Kurulum paketi bu değeri değiştirmez,install.sh --verifyuyarır. Açmak için (zimbra kullanıcısıyla):zmprov ms <proxy> zimbraReverseProxyMailMode redirectve o proxy'dezmproxyctl restart. - Wildcard ad (
*.zpe.profelis.net) HTTP-01 ile alınamaz; DNS yöntemlerinden birini seçin.
DNS (elle TXT). Sipariş başlayınca ekranda ve e-postada _acme-challenge.<ad> için eklenecek TXT kayıtları gösterilir. Kayıtları DNS'e ekleyin, yayılmasını bekleyin, TXT eklendi, doğrula'ya basın. Wildcard için uygundur; her yenilemede yeni TXT değeri gerekir.
DNS (RFC2136 dinamik güncelleme). TXT kayıtları TSIG ile imzalı dinamik DNS güncellemesiyle eklenir ve sonra silinir; her yenileme kendiliğinden yürür. Alanlar: DNS sunucusu (güncelleme kabul eden birincil ad sunucusu), Port (53), Bölge (zone), TSIG anahtar adı, TSIG algoritması (hmac-sha256 veya hmac-sha512) ve TSIG secret (base64). BIND'de anahtar üretmek:
tsig-keygen -a hmac-sha256 pf-acme
Çıktıdaki secret değerini TSIG secret alanına yapıştırın ve bölgede bu anahtara yalnız TXT güncelleme yetkisi verin, örneğin:
update-policy { grant pf-acme name _acme-challenge.mail.zpe.profelis.net. TXT; };
Secret kaydedildikten sonra bir daha gösterilmez; alanı boş bırakırsanız kayıtlı secret korunur.
Restart modları¶
zmcertmgr deploycrt servisleri yeniden başlatmaz; yeniden başlatılana kadar eski sertifika sunulmaya devam eder, yani kesinti olmaz.
- Manuel: yeni sertifika kurulduktan sonra düğümler Yeniden başlatma bekliyor durumuna geçer. Şimdi yeniden başlat veya Restart planla ile başlatırsınız. Yapılmazsa eski sertifikanın bitişine 7, 2 ve 1 gün kala hatırlatma e-postası gider.
- Otomatik: düğümler kurulumdan sonraki ilk Restart saati'nde (sunucu yerel saati, varsayılan
03:00) yeniden başlatılır.
Yeniden başlatma sıralıdır: bir düğümün servisleri ayağa kalkmadan sıradaki başlamaz, mailbox uzantısının çalıştığı sunucu en son başlatılır. Bir düğüm başarısız olursa sıra durur ve bildirim gider.
Uzak düğümlere sertifika kurulumu ve restart Zimbra'nın kendi kanalıyla (zmrc, zimbra kullanıcısının ssh anahtarı) yapılır. Çok sunuculu kurulumda bu kanal çalışmıyorsa install.sh --verify uyarır; tüm sunucularda zimbra kullanıcısıyla zmupdateauthkeys çalıştırın.
Durum ve bildirimler¶
Sertifikalar ekranındaki Let's Encrypt bölümünde her hedef (sunucu sertifikası veya bir domain sertifikası) ayrı bir karttır:
- Kart başlığı: hedefin türü ve adı.
- Durum hapı: Etkin, Kapalı, İlk sertifika bekleniyor, Sipariş ediliyor, DNS TXT kayıtları bekleniyor, Kurulum başarısız, Staging testi başarılı, Restart bekliyor, Dağıtım başarısız, Süresi dolmuş ya da günlük sipariş sınırı.
- Sertifikadaki adlar ve Bitiş, Sonraki yenileme (tarih ve "38 gün sonra" gibi kalan süre) ile Restart modu.
- Düğümler listesi: her sunucunun adı, yalnız sertifikayla ilgili rolleri (mailbox, proxy, mta, ldap), sürüm ve durum hapı (ör. Yeniden başlatıldı, Dahil değil); hata veya uyarı varsa satırın altında açılır ayrıntı.
Kartın alt çubuğunda o anki duruma uyan işlemler (Şimdi yenile, Yeniden dene, Şimdi yeniden başlat, Restart planla, TXT eklendi, doğrula) ve Düzenle bulunur. Hiç hedef yoksa bölüm kısa bir açıklama ve Let's Encrypt düğmesi gösterir. Yenileme, kalan süre sertifika ömrünün üçte birine indiğinde başlar (90 günlük sertifikada ~30 gün kala). Şimdi yenile beklemeden sipariş verir.

E-posta bildirimleri (konu [Profelis Sertifika] <olay> - <hedef>, Türkçe ve İngilizce gövde; secret veya PEM içermez): sertifika yenilendi, yeniden başlatma planlandı, yeniden başlatıldı, DNS TXT kaydı gerekli, hata (aşamasıyla) ve restart hatırlatması (7, 2, 1 gün).
Restart sonrası düğüm, o düğümde etkin ve sertifikayı kullanan servisler (mailbox, proxy, mta, ldap) çalışıyorsa Yeniden başlatıldı sayılır; durmuş başka servisler ve proxy'nin 443'te yeni sertifikayı sunmaması (SNI seri numarası denetimi) düğüm listesinde ve e-postada uyarı olarak görünür.
Let's Encrypt zinciri çapraz imzalı ara kökle (Root YR/YE) biter; Zimbra'nın zmcertmgr verifycrt denetimi kendinden imzalı kökü ister. Uzantı, zincir ISRG Root X1/X2 tarafından imzalanmışsa (imza denetlenerek) gömülü kökü zincire kendiliğinden ekler (Let's Encrypt ve hazır sertifika yükleme yolu); /opt/zimbra/common/etc/ssl/certs dizininin doldurulması gerekmez. Staging kökleri eklenmez.
Let's Encrypt limitleri¶
Let's Encrypt aynı ad kümesi için haftada en fazla 5 sertifika, hesap ve ad başına saatte en fazla 5 başarısız doğrulama kabul eder. Bu yüzden:
- Aynı hedef ve aynı ACME dizini için 24 saatte en fazla 3 sipariş verilir (staging ve production ayrı sayılır). Hatalı denemeler arasında 1 saat, 6 saat ve 24 saat beklenir.
- Sertifika alınıp bir düğüme kurulamazsa hedef Kurulum başarısız durumunda kalır ve kendiliğinden yeniden sipariş vermez; yeniden sipariş haftalık limiti hızla tüketir. Nedeni giderip Yeniden dene'ye basın.
- İlk denemeyi Staging (test sertifikası) ile yapın (gelişmiş ayarlar). Staging yalnız sertifika verilişi testidir: ACME hesabının, siparişin ve HTTP-01/DNS doğrulamasının dışarıdan çalıştığını kanıtlar, limitleri ayrıdır. Staging sertifikası hiçbir zaman kurulmaz (LDAP'a yazılmaz,
deploycrtve restart yapılmaz, mevcut sertifika yerinde kalır); hedef Staging testi başarılı durumunda verilen sertifikanın yayıncısını gösterir ve bildirim gönderir. Gerçek sertifika için Staging'i kapatıp kaydedin; prod dizininde hemen yeni sipariş verilir.
Domain sertifikası için Let's Encrypt¶
Domain sertifikası penceresinde Let's Encrypt ile otomatik al kutusunu işaretleyin. PEM alanları gizlenir; E-posta, Ek isimler, doğrulama yöntemi ve restart ayarları görünür. Sertifikadaki adlar Sanal host adı ve ek isimlerdir.

Let's Encrypt domain sertifikalarında zmdomaincertmgr deploycrts adımını elle yapmanız gerekmez: mailbox servisi de olan her proxy sunucusu yeni sürümü kendisi dağıtır ve Yeniden başlatma bekliyor durumuna geçer. Mailbox servisi olmayan (yalnız proxy) sunucular Elle işlem gerekli görünür; bu sunucularda her yenilemeden sonra root olarak şunu çalıştırın (komut zimbra kullanıcısına kendisi geçer; ekran ve e-posta da bu komutu gösterir):
su - zimbra -c '/opt/zimbra/libexec/zmdomaincertmgr deploycrts && zmproxyctl restart'
Let's Encrypt açık bir domaine PEM ile elle sertifika kaydederseniz onay istenir ve o domainde Let's Encrypt kapatılır; sonraki yenileme kurum sertifikanızın üzerine yazmaz.
Hazır sertifika yüklemek¶
Başka yerden alınmış bir sertifikayı tüm düğümlere tek adımda kurar.
- Başlıktaki Hazır sertifika yükle'ye tıklayın.
- Hedef olarak Sunucu sertifikası'nı veya bir domaini seçin.
- Sertifika, Zincir (ara + kök) ve Anahtar (parolasız) alanlarını yapıştırın.
- Test et'e basın: anahtar eşleşmesi ve zincir sunucuda denetlenir. Yükle yalnız test geçince açılır; test sonrası bir alan değişirse yeniden kapanır.
- Yükle'ye basın. Sertifika yeni sürüm olarak LDAP'a yazılır ve hedefin tüm düğümlerine kurulur; bir düğümde hata olursa geri alınır. Restart Let's Encrypt ile aynı şekilde yürür.

Hedefte Let's Encrypt açıksa yükleme öncesi onay istenir ve o hedefte Let's Encrypt kapatılır. Yükleme başarısız olsa da otomatik yenileme kapalı kalır.
Proxy CA (istemci sertifikası ile kimlik doğrulama)¶
Proxy CA, kullanıcılarınızın istemci sertifikalarını imzalayan sertifika otoritesidir: kurum içi PKI, e-imza / akıllı kart altyapısı (örn. kurumunuzun kartlarını basan elektronik sertifika hizmet sağlayıcısı) gibi. nginx proxy, tarayıcının TLS el sıkışmasında sunduğu sertifikayı bu CA ile doğrular (karşılıklı TLS, mutual TLS). Değer zimbraReverseProxyClientCertCA özniteliğinde durur.
Neyle karıştırılmamalı
Proxy CA sunucu sertifikasının zinciri değildir. Sunucu sertifikasının ara ve kök sertifikaları Kur / CSR, Hazır sertifika yükle veya Let's Encrypt ile kurulur. Let's Encrypt veya ticari sunucu sertifikası için Proxy CA gerekmez. Yalnız tarayıcıların sertifikayla kimlik kanıtlaması isteniyorsa gerekir.
Ne zaman gerekir¶
- Kullanıcıların parola yerine (veya parolaya ek olarak) akıllı kart / e-imza ya da kurum PKI'sinin verdiği sertifikayla giriş yapması isteniyorsa.
- Web arayüzüne yalnız kurumun sertifika verdiği cihazlardan erişilmesi isteniyorsa (
onmodu).
Gerekenler¶
- İstemci sertifikalarını imzalayan kök CA ve varsa ara CA'ların PEM'i (
-----BEGIN CERTIFICATE-----). Kullanıcı sertifikası, sunucu sertifikası veya özel anahtar yüklenmez; pencere bunları reddeder. - Kullanıcı sertifikasından Zimbra hesabına eşleme kuralı (mailbox tarafı, aşağıda).
- Her proxy sunucusunda kayıttan sonra proxy yeniden başlatma.
Proxy CA penceresi¶
- Diğer menüsünden Proxy CA'yı açın. Pencere yalnız global yöneticiye açılır.
- Uygulanacak yer: Global (tüm proxy sunucuları), bir Proxy sunucusu ya da bir Domain. Sunucu ve domain değeri, devralınan global değerin yerine geçer.
- Mevcut (etkin) satırı o kapsamda geçerli CA'yı (CN ve bitiş tarihi) ve istemci sertifikası modunu gösterir. Değer üst kapsamdan devralınmış olabilir.
- Yeni CA PEM kutusuna CA'yı yapıştırın (en fazla 64 KB, bir veya birden çok sertifika). Mevcut CA kalsın istiyorsanız boş bırakın.
- zimbraReverseProxyClientCertMode seçin:
off,optionalveyaon. - CA'yı silmek için CA'yı kaldır işaretleyin. Yalnız mod
offiken yapılabilir; modoffseçimi kaldırmayla aynı kayıtta yazılır. - Tamam'a basın. Dosya stok
UploadProxyCARequestile sunucuya yüklenir, sunucunun döndürdüğü içerik yeniden denetlenir ve kapsama göre global yapılandırmaya, sunucuya veya domaine yazılır. Mod yalnız değiştiyse yazılır.

Kayıtta denetlenenler: yalnız CERTIFICATE blokları, her biri CA sertifikası (basicConstraints CA:TRUE; uzantısız eski sertifikada yalnız kendinden imzalı kök kabul edilir), süresi geçmemiş, toplam 64 KB'ı aşmıyor. Mod on/optional iken o kapsamda CA yoksa kayıt reddedilir.
Sürüm 1.2.1 ve öncesi
1.2.2'den önceki sürümlerde pencere dosyayı yüklüyor ama zimbraReverseProxyClientCertCA'ya yazmıyordu: stok UploadProxyCARequest yalnız dosya içeriğini geri döndürür, hiçbir yere kaydetmez. Eski sürümle "yüklenmiş" görünen CA'yı 1.2.2 ile yeniden kaydedin.
Modlar¶
| Mod | Davranış |
|---|---|
off (varsayılan) |
İstemci sertifikası istenmez. Proxy CA tanımlı olsa da kullanılmaz. |
optional |
nginx sertifika ister; tarayıcı gönderirse CA ile doğrular. Sertifikası olmayan kullanıcı parolayla girmeye devam eder. Geçişte önerilen moddur. |
on |
Sertifika zorunludur. Bu CA'nın imzaladığı geçerli sertifikası olmayan her tarayıcı (yöneticiler dahil) TLS aşamasında reddedilir. |
CA olmadan mod açmayın
zimbraReverseProxyClientCertMode on veya optional iken CA tanımlı değilse zmproxyconfgen Client certificate verification is enabled but no client cert ca is provided hatasıyla çıkar ve proxy yapılandırması üretilmez; proxy yeniden başlatılamaz. Pencere bu durumu kaydetmez, ama öznitelik CLI'dan elle değiştirilirse aynı hata oluşur.
Proxy tarafında ne olur¶
zmproxyconfgen (proxy yeniden başlatılırken çalışır) CA'yı /opt/zimbra/conf/nginx.client.ca.crt dosyasına, domain kapsamındaki CA'yı /opt/zimbra/conf/domaincerts/<domain>.client.ca.crt dosyasına yazar; nginx'e ssl_client_certificate ve ssl_verify_client <mod> satırlarını ekler. Doğrulama zinciri derinliği zimbraReverseProxyClientCertDepth ile belirlenir (varsayılan 10). Domain kapsamı, domainin kendi zimbraVirtualHostname adıyla (SNI) sunulan HTTPS sunucusunda geçerlidir.
Mod on/optional olunca nginx ayrıca bir sertifika-giriş sunucusu açar: zimbraMailSSLProxyClientCertPort (varsayılan 3443) üzerinde yalnız /certauth (web) ve /certauth/admin (yönetici konsolu) yolları kabul edilir, gerisi 403 döner.
Sertifikadan hesaba eşleme (mailbox tarafı)¶
Proxy yalnız sertifikanın CA'ya zincirlendiğini doğrular; sertifikanın hangi hesaba ait olduğunu mailbox belirler. /certauth isteği mailbox'ın istemci sertifikası portuna gider; jetty /certauth/* yolunu /service/certauth'a (CertAuthServlet) yönlendirir. İlgili öznitelikler:
| Öznitelik | Kapsam | Anlamı |
|---|---|---|
zimbraMailSSLClientCertMode |
global, sunucu | Disabled (varsayılan), WantClientAuth (sertifika istenir, yoksa normal giriş sayfası), NeedClientAuth (zorunlu). Değişiklik mailboxd yeniden başlatma ister. |
zimbraMailSSLClientCertPort |
global, sunucu | Mailbox'ın istemci sertifikası isteyen SSL portu (varsayılan 9443). Bu portta yalnız /service/certauth açıktır. |
zimbraMailSSLClientCertPrincipalMap |
global, domain | Sertifika alanından hesaba eşleme kuralları, virgülle ayrılır, sırayla denenir. Varsayılan SUBJECT_EMAILADDRESS=name: konu alanındaki e-posta adresi hesap adı (veya takma adı) olmalıdır. |
zimbraMailSSLClientCertPrincipalMapLdapFilterEnabled |
global | Eşleme kuralında LDAP filtresi kullanımına izin verir (varsayılan kapalı; her girişte LDAP araması yapar). |
zimbraMailSSLClientCertOCSPEnabled |
global, sunucu | Mailbox tarafında OCSP iptal denetimi (varsayılan açık). |
Eşleme alanları: SUBJECT_<RDN> (örn. SUBJECT_CN, SUBJECT_SERIALNUMBER), SUBJECT_DN, SUBJECTALTNAME_OTHERNAME_UPN, SUBJECTALTNAME_RFC822NAME. Hedef anahtarlar: name, zimbraId, zimbraForeignPrincipal. Örneğin e-posta adresi taşımayan kart sertifikalarında seri numarası alanı kullanılabilir:
zmprov mcf zimbraMailSSLClientCertPrincipalMap 'SUBJECT_SERIALNUMBER=zimbraForeignPrincipal,SUBJECT_EMAILADDRESS=name'
zmprov ma ali@ornek.gov.tr +zimbraForeignPrincipal 'cert SUBJECT_SERIALNUMBER:12345678901'
Mailbox istemci sertifikasını kendisi doğrulayacağı için CA, mailbox sunucularının istemci SSL güven deposuna da eklenmelidir (zimbra kullanıcısıyla zmcertmgr addcacert /tmp/ca.pem, ardından zmmailboxdctl restart). zimbraMailMode http olmamalıdır. OCSP açıkken (varsayılan) sertifikadaki OCSP adresine ulaşılamazsa veya sertifika iptal edilmişse sertifikayla giriş başarısız olur ve kullanıcı parola sayfasına yönlendirilir.
Kullanıcıların normal adrese girince doğrudan sertifikayla giriş yapması için domainin giriş/çıkış adresleri sertifika-giriş adresine yönlendirilebilir (stok Zimbra yöntemi):
zmprov md ornek.gov.tr zimbraWebClientLoginURL 'https://mail.ornek.gov.tr:3443/certauth'
zmprov md ornek.gov.tr zimbraWebClientLogoutURL '../?sso=1'
Kayıttan sonra¶
Her proxy sunucusunda root olarak:
su - zimbra -c 'zmproxyctl restart'
Kontrol: /opt/zimbra/conf/nginx.client.ca.crt yüklediğiniz CA'yı içermeli, grep -r ssl_verify_client /opt/zimbra/conf/nginx/includes/ seçtiğiniz modu göstermelidir.
Test¶
Sunucunun istemci sertifikası istediğini ve hangi CA'ları kabul ettiğini görmek için:
openssl s_client -connect mail.ornek.gov.tr:443 -servername mail.ornek.gov.tr </dev/null | grep -A3 'Acceptable client certificate CA names'
Kullanıcı sertifikasıyla bağlantı (sertifika ve anahtar PEM dosyası olarak):
openssl s_client -connect mail.ornek.gov.tr:443 -servername mail.ornek.gov.tr -cert kullanici.crt -key kullanici.key </dev/null
curl -v --cert kullanici.crt --key kullanici.key https://mail.ornek.gov.tr:3443/certauth
Tarayıcıda: kullanıcı sertifikasını (akıllı kart sürücüsü veya .p12 içe aktarma ile) tarayıcıya tanıtın, https://<host>:3443/certauth adresini açın; tarayıcı sertifika seçtirir, eşleşen hesap varsa web arayüzü açılır. on modunda sertifika seçmeden bağlanan tarayıcı hata sayfası almalıdır.
Sorun giderme¶
| Belirti | Neden ve çözüm |
|---|---|
zmproxyctl restart başarısız, logda no client cert ca is provided |
Mod on/optional ama etkin kapsamda CA yok. CA'yı kaydedin ya da modu off yapın: zmprov mcf zimbraReverseProxyClientCertMode off. |
| Tarayıcı sertifika sormuyor | Mod off veya proxy yeniden başlatılmadı. s_client çıktısında Acceptable client certificate CA names yoksa proxy yapılandırması güncel değildir. |
| 400 The SSL certificate error / No required SSL certificate was sent | Kullanıcı sertifikası bu CA'ya zincirlenmiyor ya da ara CA eksik. İstemci sertifikasını imzalayan ara CA'yı da yükleyin; zincir derinliği zimbraReverseProxyClientCertDepth'i aşmamalı. |
| Sertifika kabul ediliyor ama giriş olmuyor | Hesap eşlemesi bulunamadı: zimbraMailSSLClientCertPrincipalMap kuralını ve hesabın zimbraForeignPrincipal değerini denetleyin; mailbox'ta zimbraMailSSLClientCertMode Disabled olmamalı ve CA mailbox güven deposunda olmalı. OCSP adresine erişim yoksa veya sertifika iptal edildiyse de parola sayfasına düşülür (zimbraMailSSLClientCertOCSPEnabled). Ayrıntı /opt/zimbra/log/mailbox.log. |
| Pencere bir CA sertifikası değil diyor | Kullanıcı veya sunucu sertifikası yüklenmiş. İstemci sertifikalarını imzalayan CA'yı (kart sağlayıcısının kök/ara sertifikası) yükleyin. |
| CA'yı kaldır reddediliyor | Bu kapsamda mod off değil. Modu off seçip aynı kayıtta kaldırın. |
Anahtarların saklanması¶
- Let's Encrypt durumu LDAP'ta
pf-cert-acme@<varsayılan domain>sistem hesabında tutulur; her mailbox sunucusu aynı durumu okur. - ACME hesap anahtarı ve TSIG secret LDAP'ta Zimbra'nın DataSource şifrelemesiyle gizlenir. Bu gerçek bir şifreleme değil, gizlemedir: LDAP okuma yetkisi olan biri değerleri çözebilir. LDAP erişimini buna göre kısıtlayın. Şifreleme yapılamazsa kayıt reddedilir; secret düz metin olarak yazılmaz.
- Sertifikanın özel anahtarı stok Zimbra'da olduğu gibi
zimbraSSLPrivateKeyözniteliğinde (sunucu veya domain kaydında) düz durur; proxy vezmcertmgronu düz okur. - Secret ve PEM içerikleri loglanmaz ve hiçbir yanıtta geri dönmez. Tüm Let's Encrypt işlemleri yalnız global yöneticiye açıktır ve
audit.log'a yazılır.
Sorun giderme¶
| Belirti | Neden ve çözüm |
|---|---|
GetCertRequest için unknown document |
Zimbra sertifika yöneticisi bileşeni kurulu değil. |
Sanal IP tanımlandıktan sonra nginx: unknown directive "${web.strict.servername}" |
Yama paketi 120 ile düzeltildi (Zimbra PFE 10); güncel zmpatch paketini kurun. |
PfCertProbeSniRequest için unknown document |
Sunulan sertifika kontrolü aynı paketteki Profelis sertifika uzantısını gerektirir; kurup mailboxd'yi yeniden başlatın. |
PfCertVerifyRequest için unknown document |
Profelis sertifika uzantısı yüklenmemiş veya mailboxd yeniden başlatılmamış; zimlet stok yoldan çalışır, dışarıdan anahtar yüklenemez. |
Kurulum deploycrt adımında duruyor |
Diskteki anahtar yapıştırdığınızla aynı değil. Zimbra kullanıcısıyla zmcertmgr deploycrt comm ve zmcontrol restart çalıştırın; sertifika ve anahtar LDAP'tan alınır. |
PfCertLeStatusRequest için unknown document, Let's Encrypt bölümü görünmüyor |
Mailbox sunucularında sertifika uzantısı 1.2.0 veya üstü kurulu değil ya da mailboxd yeniden başlatılmamış. |
Ön kontrol: İsim DNS'te çözülmüyor (ERR_dns_none) |
Ad için A/AAAA kaydı yok. Kaydı ekleyin ya da DNS yöntemlerinden birini seçin. |
Ön kontrol: bu ismin 80 portu bu kuruluma ulaşmıyor (ERR_probe_mismatch) |
Ad başka bir sunucuyu gösteriyor, 80 portu kapalı (proxy https modunda, güvenlik duvarı) ya da jetty yönlendirmesi eksik. install.sh --verify çıktısındaki sertifika satırlarına bakın; Zimbra güncellemesinden sonra install.sh'i yeniden çalıştırıp mailboxd'yi yeniden başlatın. |
Geçersiz host adı (ERR_bad_name) veya Wildcard isimler DNS doğrulama yöntemi ister (ERR_wildcard_needs_dns) |
Adı düzeltin; *.alan için DNS (elle TXT) veya RFC2136 seçin. |
TSIG secret base64 olmalı ve en az 16 bayt olmalı (ERR_tsig_secret) |
tsig-keygen çıktısındaki secret değerini tırnaksız yapıştırın. |
| Hedef Kurulum başarısız | Sertifika alındı ama bir düğümde verifycrt/deploycrt başarısız oldu; önceki sertifika yerinde. Düğüm listesindeki hatayı giderip Yeniden dene'ye basın. Kendiliğinden yeniden sipariş verilmez (Let's Encrypt haftalık limiti). |
| Düğüm Elle işlem gerekli | Mailbox servisi olmayan proxy sunucusu: root olarak su - zimbra -c '/opt/zimbra/libexec/zmdomaincertmgr deploycrts && zmproxyctl restart'. |
Uzak düğümde kurulum veya restart başarısız, install.sh --verify zmrc ... calismadi diyor ya da düğüm Yeniden başlatma doğrulanamadı (ERR_restart_unconfirmed) |
Zimbra kullanıcısının ssh anahtarları eksik. zmrc her iki yönde, tüm düğümler arasında çalışmalı: her sunucuda zimbra kullanıcısıyla zmupdateauthkeys. Mailbox düğümü kendi restart'ını zmrc olmadan da doğrular; 30 dakikada doğrulanmazsa bu hata görünür. |
Restart sonrası düğüm Yeniden başlatıldı ama uyarıda diğer servisler durmuş (ERR_services_stopped, ör. stats, zmconfigd Stopped) ya da Proxy hala başka sertifika sunuyor (ERR_sni_mismatch) |
Sertifikayı kullanan servisler (mailbox, proxy, mta, ldap) çalışıyor; restart başarılı sayılır. Tipik neden: sistem çözümleyicisi Zimbra'nın kendi dnscache'i (/etc/resolv.conf içinde 127.0.0.1), restart sırasında DNS kısa süre kapanır, zmconfigd açılışta UnknownHostException ile ölür ve proxy yapılandırması eksik üretilir. Çözüm, o sunucuda root olarak: su - zimbra -c 'zmconfigdctl start; zmproxyctl restart'; kalıcı çözüm için tüm küme sunucularını /etc/hosts'a yazın: her sunucuda root olarak bash scripts/install-cluster-hosts.sh (kurulum bunu kendisi çalıştırır; ayrıntı: Kurulum). |