Bu kılavuz, OpenSSL komut satırını kullanarak Postfix üzerinde nasıl CSR (Certificate Signing Request) oluşturulacağını göstermektedir. Postfix’in kendisi anahtar veya CSR oluşturmaz; OpenSSL’in ürettiği dosyaları kullanır ve bunlara /etc/postfix/main.cf içinden başvurur. Tek bir komut çalıştırarak aynı anda iki dosya oluşturursunuz: sunucuda kalan bir özel anahtar ve Sertifika Yetkilinize (CA) göndereceğiniz CSR.
CSR; MTA’nızın STARTTLS üzerinde sunduğu ana bilgisayar adını, kuruluş bilgilerinizi ve anahtarın genel (public) yarısını kodlar. Eşleşen özel anahtar sunucudan asla ayrılmaz. Onu kaybederseniz, verilen sertifika kullanılamaz hale gelir ve baştan başlamanız gerekir.
Ön Koşullar
- Postfix’in çalıştığı sunucuya root veya sudo erişimi.
- OpenSSL’in yüklü olması. Her yaygın Linux dağıtımının temel sisteminde birlikte gelir;
openssl versionile kontrol edebilirsiniz. - Sertifikada bulunmasını istediğiniz tam nitelikli posta ana bilgisayar adı, örneğin mail.example.com. Bu, çıplak apex alan adı değil, istemcilerin STARTTLS üzerinden bağlandığı MX kaydıyla eşleşmelidir.
Adım 1: Anahtar ve CSR için bir dizin hazırlayın
Postfix TLS malzemelerini /etc/postfix/ altında kendi dizininde tutun, böylece izinleri yönetmek kolaylaşır. Dizini oluşturun ve yalnızca root’a kilitleyin:
sudo mkdir -p /etc/postfix/ssl
sudo chmod 700 /etc/postfix/ssl
cd /etc/postfix/ssl
Anahtarı ve CSR’yi bu dizin içinde oluşturacak, ardından CA sertifikayı verdikten sonra bunlara main.cf içinden başvuracaksınız.
Adım 2: Özel anahtarı ve CSR’yi oluşturun
Aşağıdaki komutu çalıştırın. Bu komut, özel anahtarı ve CSR’yi tek adımda oluşturur ve modern tarayıcıların, e-posta istemcilerinin ve CA’ların gerektirdiği Subject Alternative Name (SAN) alanını içerir. SAN, çıplak apex alan adını değil, 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 /etc/postfix/ssl/mail.example.com.key
-out /etc/postfix/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 bir bölümün ne yaptığı şöyledir:
- req -new yeni bir sertifika imzalama isteği oluşturur.
- -newkey rsa:2048 yeni 2048 bitlik bir RSA özel anahtarı oluşturur. 2048 bit, genel sertifikalar için mevcut asgari değerdir; daha büyük bir anahtar için rsa:4096 kullanabilirsiniz.
- -nodes özel anahtarı şifrelenmemiş bırakır (parola yok), böylece Postfix önyükleme sırasında sorulmadan yükleyebilir.
- -keyout özel anahtarı yazar. Bu dosyayı gizli tutun ve CA dahil hiç kimseye asla göndermeyin.
- -out CA’ya göndereceğiniz CSR’yi yazar.
- -subj konu alanlarını satır içi olarak doldurur, böylece komut etkileşimli isteklere gerek kalmadan çalışır. CN (Common Name) değerini posta ana bilgisayar adınız olarak ayarlayın.
- -addext “subjectAltName=…” SAN girişini ekler. CA’lar SAN listesine göre sertifika verir, bu yüzden posta ana bilgisayar adı burada yer almalıdır.
mail.example.com yerine istemcilerin bağlandığı gerçek ana bilgisayar adını (genellikle MX kaydınızla aynı ad) yazın ve -subj değerlerini kuruluşunuza uygun ş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 komutun yine de geçerli değerlere ihtiyacı vardır. Modern OpenSSL, CSR’yi varsayılan olarak SHA-256 ile imzalar; bu da her genel CA’nın gerektirdiği şeydir.
-subj yerine alanları etkileşimli olarak doldurmayı tercih ederseniz, o satırı çıkarın ve OpenSSL her değeri sizden isteyecektir:
sudo openssl req -new -newkey rsa:2048 -nodes
-keyout /etc/postfix/ssl/mail.example.com.key
-out /etc/postfix/ssl/mail.example.com.csr
-addext "subjectAltName=DNS:mail.example.com"
İstem geldiğinde, challenge password ve optional company name alanlarını Enter’a 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ı kapsamak
Aynı Postfix örneği birden fazla adı yanıtlıyorsa (örneğin hem mail.example.com hem de smtp.example.com, veya posta ve webmail için paylaşılan bir sertifika), her ana bilgisayar adını SAN değerinde virgülle ayırarak listeleyin:
-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com,DNS:webmail.example.com"
Common Name yine de birincil posta ana bilgisayar adı olmalıdır. Çıplak apex alan adını SAN’a eklemek, yalnızca posta istemcilerinin doğrudan ona bağlandığı durumlarda işe yarar; MX kaydınız bir alt ana bilgisayar adını işaret ediyorsa, apex’i sertifikaya eklemenize gerek yoktur.
ECDSA anahtarını mı tercih ediyorsunuz?
ECDSA anahtarları aynı güvenlik düzeyinde RSA’dan daha küçük ve daha hızlıdır ve mevcut her posta istemcisi ile 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 /etc/postfix/ssl/mail.example.com.key
-out /etc/postfix/ssl/mail.example.com.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com"
-addext "subjectAltName=DNS:mail.example.com"
Adım 3: Özel anahtarı koruyun
Özel anahtarı yalnızca root’un okuyabileceği şekilde kilitleyin. Postfix, ayrıcalıklarını bırakmadan önce TLS malzemelerini açar, bu yüzden root sahipliği ve 600 modu hem doğru hem de gereklidir:
sudo chown root:root /etc/postfix/ssl/mail.example.com.key
sudo chmod 600 /etc/postfix/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 korumanıza yardımcı olur.
Adım 4: CSR’yi doğrulayın
İsteği göndermeden önce, doğru ana bilgisayar adını ve SAN’ı içerdiğinden ve imzasının geçerli olduğundan emin olun. Bu komut, çözülmüş içeriği yazdırır ve imzayı yerel olarak kontrol eder:
openssl req -noout -text -verify -in /etc/postfix/ssl/mail.example.com.csr
Çıktıda verify OK ifadesini arayın, Subject satırının Common Name olarak posta ana bilgisayar adınızı 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. Ayrıca bu alanları bir tarayıcıda kontrol etmek için CSR’yi çevrimiçi CSR Decoder aracımıza yapıştırabilirsiniz.
Adım 5: CSR’yi gönderin
CSR dosyasını açın ve BEGIN ve END satırları dahil tüm içeriğini kopyalayın:
cat /etc/postfix/ssl/mail.example.com.csr
Blok şöyle görünür. İlk satırdan son satıra kadar her şeyi, BEGIN ve END işaretlerinin her iki yanındaki beş kısa çizgi dahil olmak üzere 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ğrulayıp sertifikayı verdikten sonra, onu dağıtmak için Postfix SSL kurulum talimatlarımızı izleyin. .key dosyasını sunucuda tutun: STARTTLS’yi sunmak için bunu verilen sertifikayla birlikte kullanmanız gerekir ve onu asla CA’ya veya başka birine göndermemelisiniz.
Komut satırını kullanmak istemiyorsanız, isteği CSR Generator aracımızla oluşturun ve sonucu siparişinize yapıştırın. Oluşturucu, sunucuda aynı yola yerleştireceğiniz eşleşen bir özel anahtar döndürür.
Dosyaların Postfix’te nereye gittiği
Bağlam olarak, CA sertifikayı ve ara sertifikayı (CA paketi) döndürdükten sonra az önce oluşturduğunuz dosyaların Postfix’e nasıl bağlandığı şöyledir. Postfix 3.4 ve üzeri sürümlerde, önerilen tek direktif biçimi, özel anahtarın ardından tam sertifika zincirini içeren tek bir PEM dosyası alır:
cat mail.example.com.key mail.example.com.crt intermediate.pem
> /etc/postfix/ssl/mail.example.com.chain.pem
sudo chmod 600 /etc/postfix/ssl/mail.example.com.chain.pem
Ardından /etc/postfix/main.cf içinde:
smtpd_tls_chain_files = /etc/postfix/ssl/mail.example.com.chain.pem
smtpd_tls_security_level = may
3.4’ten eski Postfix sürümlerinde, anahtarın ve tam zincir sertifikasının ayrı dosyalarda tutulduğu eski direktif çiftini kullanın:
smtpd_tls_cert_file = /etc/postfix/ssl/mail.example.com.fullchain.crt
smtpd_tls_key_file = /etc/postfix/ssl/mail.example.com.key
smtpd_tls_security_level = may
587 numaralı bağlantı noktasındaki gönderim servisi ve OpenSSL ile doğrulama dahil olmak üzere tam kurulum anlatımı Postfix SSL kurulum kılavuzumuzda yer almaktadır.
Diğer posta platformlarında CSR oluşturma
Farklı bir posta sunucusu veya ağ geçidi mi çalıştırıyorsunuz? Diğer CSR kılavuzlarımıza göz atı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


