Bu kılavuz, OpenSSL komut satırını kullanarak qmail üzerinde nasıl CSR (Sertifika İmzalama Talebi) oluşturulacağını gösterir. Qmail (ve etkin bir şekilde geliştirilen çatalı olan notqmail), yerleşik bir CSR aracı içermez. İki dosyayı aynı anda oluşturmak için OpenSSL kullanırsınız: sunucuda kalan bir özel anahtar ve Sertifika Yetkilinize (CA) göndereceğiniz CSR.
CSR, sunucunuzun STARTTLS sırasında sunduğu posta ana bilgisayar adını, kuruluş bilgilerinizi ve anahtarın genel yarısını kodlar. Eşleşen özel anahtar sunucudan asla ayrılmaz. Onu kaybederseniz, verilen sertifika kullanılamaz hale gelir ve yeni bir çift oluşturmanız gerekir.
Qmail ile notqmail hakkında bir not: orijinal qmail, Daniel J. Bernstein tarafından 1998’de dondurulmuştur ve o zamandan beri herhangi bir üst akış güncellemesi almamıştır. notqmail (en son sürüm: 1.09, Mayıs 2024), güvenlik düzeltmeleri, güncel derleme uyumluluğu ve süregelen taşınabilirlik çalışmaları ekleyen topluluk tarafından sürdürülen çataldır. TLS bunun bir parçası değildir: notqmail’de, orijinal qmail’de olduğu gibi, STARTTLS harici bir yamadan gelir ve 1.09 sürüm notları, mevcut smtp-tls yamasının o sürüme uygulanamadığını ve yeni bir üst akış yamasına gerek olduğunu kaydeder. Sertifika sipariş etmeden önce çalıştırdığınız sürümün yama durumunu kontrol edin. CSR oluşturma işlemi her ikisi için de aynıdır, çünkü herhangi bir qmail ikili dosyası değil OpenSSL kullanır. Halen orijinal qmail çalıştırıyorsanız, sürekli güvenlik desteği için notqmail veya Postfix’e geçmeyi düşünün.
Ön Koşullar
- Qmail (veya notqmail) çalıştıran sunucuya root veya sudo erişimi.
- OpenSSL yüklü olmalıdır. Her yaygın Linux ve BSD dağıtımının temel sisteminde birlikte gelir.
openssl versionile kontrol edin. - Sertifikada bulunmasını istediğiniz tam nitelikli posta ana bilgisayar adı, örneğin mail.example.com. Bu, istemcilerin STARTTLS üzerinden bağlandığı MX kaydıyla eşleşmelidir, sade apex alan adıyla değil.
1. Adım: Anahtar ve CSR için bir dizin hazırlayın
Qmail-smtpd, TLS sertifikasını /var/qmail/control/servercert.pem yolundan okur; bu yol TLS yaması tarafından sabit kodlanmıştır. Anahtar materyali için bir alt dizin oluşturun ve bunu root ile kilitleyin:
sudo mkdir -p /var/qmail/control/ssl
sudo chmod 700 /var/qmail/control/ssl
cd /var/qmail/control/ssl
Anahtarı ve CSR’yi bu dizinde oluşturacaksınız. CA sertifikayı verdikten sonra, dosyaları qmail-smtpd’nin başlangıçta okuduğu servercert.pem dosyasında birleştirirsiniz.
2. Adım: Özel anahtarı ve CSR’yi oluşturun
Aşağıdaki komutu çalıştırın. Bu komut, özel anahtarı ve CSR’yi bir adımda oluşturur ve modern posta istemcileri ile CA’ların gerektirdiği Konu Alternatif Adı’nı (SAN) dahil eder. SAN, posta ana bilgisayar adını (MX kaydınızın işaret ettiği adı) listelemelidir:
sudo openssl req -new -newkey rsa:2048 -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/ssl/mail.example.com.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com"
-addext "subjectAltName=DNS:mail.example.com"
Her bölümün ne yaptığı şu şekildedir:
- req -new yeni bir sertifika imzalama talebi oluşturur.
- -newkey rsa:2048 yeni bir 2048 bit RSA özel anahtarı oluşturur. 2048 bit, genel sertifikalar için mevcut minimum değerdir; daha büyük bir anahtar için rsa:4096 kullanabilirsiniz.
- -nodes özel anahtarı şifrelenmemiş bırakır (parola olmadan), böylece qmail-smtpd başlangıçta sormadan yükleyebilir.
- -keyout özel anahtarı yazar. Bu dosyayı gizli tutun ve CA da dahil hiç kimseye göndermeyin.
- -out CA’ya göndereceğiniz CSR’yi yazar.
- -subj konu alanlarını satır içinde doldurur, böylece komut etkileşimli sorular sormadan çalışır. CN‘yi (Ortak Ad) posta ana bilgisayar adınıza ayarlayın.
- -addext “subjectAltName=…” SAN girişini ekler. CA’lar SAN listesine göre verir, dolayısıyla posta ana bilgisayar adı burada bulunmalıdır.
mail.example.com‘u istemcilerin bağlandığı gerçek ana bilgisayar adıyla değiştirin (genellikle MX kaydınızla aynı ad) ve -subj değerlerini kuruluşunuza uyacak şekilde düzenleyin. İki harfli ülke kodu (C) büyük harf olmalıdır, örneğin US veya GB. Alan doğrulamalı (DV) bir sertifika için kuruluş alanları doğrulanmaz, ancak komut için geçerli değerler gereklidir. Modern OpenSSL, CSR’yi varsayılan olarak SHA-256 ile imzalar; bu, her genel CA’nın gerektirdiği şeydir.
-subj kullanmak yerine alanları etkileşimli olarak doldurmayı tercih ediyorsanız, o bayrağı kaldırın ve OpenSSL her değer için size soru soracaktır:
sudo openssl req -new -newkey rsa:2048 -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/ssl/mail.example.com.csr
-addext "subjectAltName=DNS:mail.example.com"
İstendiğinde, challenge password ve optional company name alanlarını Enter tuşuna basarak boş bırakın. CA’lar bu alanları göz ardı eder ve bir challenge password daha sonra sorunlara yol açar.
Birden fazla ana bilgisayar adını kapsama
Aynı qmail örneği birden fazla adda yanıt veriyorsa (örneğin, hem mail.example.com hem de smtp.example.com), her ana bilgisayar adını SAN değerinde virgülle ayırarak listeleyin:
-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com"
Ortak Ad hâlâ birincil posta ana bilgisayar adı olmalıdır. Sade apex alan adını SAN’a eklemek, yalnızca posta istemcileri ona doğrudan bağlanırsa yararlı olur; MX kaydınız bir alt ana bilgisayar adına işaret ediyorsa, apex’i sertifikaya eklemenize gerek yoktur.
ECDSA anahtarını mı tercih ediyorsunuz?
ECDSA anahtarları, aynı güvenlik seviyesinde RSA’dan daha küçük ve daha hızlıdır ve her güncel posta istemcisi ve CA tarafından desteklenir. Bunun yerine bir P-256 (prime256v1) anahtarı ve CSR oluşturmak için, -newkey argümanını değiştirin:
sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/ssl/mail.example.com.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com"
-addext "subjectAltName=DNS:mail.example.com"
DJB’nin TLS yamalarıyla orijinal qmail’in ECDSA’yı desteklemeyebileceğini unutmayın. Güncel bir OpenSSL ile notqmail çalıştırıyorsanız, ECDSA sorunsuz çalışır.
3. Adım: Özel anahtarı koruyun
Özel anahtarı, yalnızca root’un okuyabileceği şekilde kilitleyin. Ham anahtar dosyası yalnızca daha sonra birleşik servercert.pem oluştururken gerekli olur, dolayısıyla root sahipliği ve 600 modu doğrudur:
sudo chown root:root /var/qmail/control/ssl/mail.example.com.key
sudo chmod 600 /var/qmail/control/ssl/mail.example.com.key
CSR dosyası gizli değildir (yalnızca genel anahtarı ve konu bilgilerinizi içerir), ancak onu aynı kilitli dizinde tutmak düzeni korur.
4. Adım: CSR’yi doğrulayın
Talebi göndermeden önce, doğru ana bilgisayar adını ve SAN’ı içerdiğini ve imzasının geçerli olduğunu doğrulayın:
openssl req -noout -text -verify -in /var/qmail/control/ssl/mail.example.com.csr
Çıktıda verify OK ifadesini arayın, Subject satırının posta ana bilgisayar adınızı Ortak Ad olarak gösterdiğini kontrol edin ve X509v3 Subject Alternative Name bölümünün beklediğiniz her ana bilgisayar adını listelediğini doğrulayın. Bir SAN eksikse, CSR’yi doğru -addext değeriyle yeniden oluşturun: bir CA, sertifika verildikten sonra ana bilgisayar adı ekleyemez. CSR’yi çevrimiçi CSR Decoder aracımıza yapıştırarak da bu alanları bir tarayıcıda kontrol edebilirsiniz.
5. Adım: CSR’yi gönderin
CSR dosyasını açın ve BEGIN ve END satırları dahil olmak üzere tüm içeriğini kopyalayın:
cat /var/qmail/control/ssl/mail.example.com.csr
Blok şu şekilde görünür. BEGIN ve END işaretlerinin her tarafındaki beş tire de dahil olmak üzere ilk satırdan son satıra kadar her şeyi kopyalayın:
-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----
Bu bloğu SSL sipariş formunuza yapıştırın. CA, CSR’yi doğruladıktan ve sertifikayı verdikten sonra, dağıtmak için qmail SSL kurulum kılavuzumuzu izleyin. .key dosyasını sunucuda tutun: STARTTLS’i etkinleştirmek için verilen sertifikayla birlikte ihtiyacınız vardır ve onu asla CA’ya veya başka kimseye göndermemelisiniz.
Komut satırını kullanmak istemiyorsanız, talebi CSR Generator aracımızla oluşturun ve sonucu siparişinize yapıştırın. Oluşturucu, sunucuda aynı yola koyacağınız eşleşen bir özel anahtar döndürür.
Dosyalar qmail’de nereye gider
Bağlam olarak, CA sertifikayı ve ara sertifikayı (CA paketi) döndürdükten sonra, az önce oluşturduğunuz dosyaların qmail’e nasıl bağlandığı şu şekildedir. Qmail-smtpd, TLS materyalini /var/qmail/control/servercert.pem konumundaki tek bir birleşik PEM dosyasından okur. Bu dosya, özel anahtarı, sunucu sertifikasını ve ara sertifikaları bu sırayla birleştirilmiş şekilde içermelidir:
cat mail.example.com.key mail.example.com.crt intermediate.pem
> /var/qmail/control/servercert.pem
sudo chown root:nofiles /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem
nofiles grubu, qmail-smtpd’nin çalıştığı qmaild kullanıcısının varsayılan grubudur. 640 modu, qmaild’in dosyayı grup üyeliği yoluyla okumasına izin verirken diğer kullanıcılar tarafından okunamaz kalmasını sağlar. Sisteminiz qmaild için farklı bir grup kullanıyorsa, chown komutunda o grup adını kullanın.
Qmail-smtpd, STARTTLS’i yalnızca TLS desteğiyle derlenmişse sunar; bu desteği ne orijinal qmail ne de notqmail kendi başına sunar. Her ikisinde de olağan yol, Frederik Vermeulen’in qmail-tls yamasıdır: qmail-smtpd’nin servercert.pem‘i okumasını ve o dosya yerine konur konmaz STARTTLS’i duyurmasını sağlayan şey budur. Diğer yol ise, Erwin Hoffmann’ın ucspi-ssl ile s/qmail’idir; burada sslserver, UCSPITLS ortam değişkenini /service/qmail-smtpd/run içinde dışa aktarır ve anahtar ayrı bir serverkey.pem dosyasında bulunur, dolayısıyla yukarıdaki tek dosya düzeni orada geçerli değildir. Birleşik PEM dosyasını yerleştirdikten sonra, qmail-smtpd hizmetini yeniden başlatın:
sudo svc -t /service/qmail-smtpd
Sertifika zincirini OpenSSL ile doğrulama dahil, kurulumun tam açıklaması qmail SSL kurulum kılavuzumuzda yer almaktadır.
Kurulumdan sonra STARTTLS’i doğrulayın
Sertifika kurulduktan sonra, sunucunuzun STARTTLS’i duyurduğunu ve geçerli bir zincir sunduğunu doğrulayın:
openssl s_client -connect mail.example.com:25 -starttls smtp -servername mail.example.com
Verify return code: 0 (ok) ifadesini arayın ve konunun ve verenin sertifikanızla eşleştiğini doğrulayın. Sertifika zincirinin ve sona erme tarihinin görsel bir raporu için sunucuyu SSL Checker aracımızla da tarayabilirsiniz.
Diğer posta platformlarında CSR oluşturma
Farklı bir posta sunucusu mu çalıştırıyorsunuz? Diğer CSR kılavuzlarımıza bakın:
Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!
Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10


