CSR (Certificate Signing Request) nedir?
CSR (Certificate Signing Request), bir SSL sertifikası sipariş ederken sunucunuzda, bir kontrol panelinde veya OpenSSL gibi bir araçla oluşturup sertifika yetkilisine (CA) — ya da SSLCipher gibi bir bayiye — gönderdiğiniz, kodlanmış küçük bir metin dosyasıdır. CSR sertifikanın kendisi değildir; genel anahtarınızı ve CA'nın sertifikayı üretebilmesi için ihtiyaç duyduğu alan adı bilgilerini taşıyan bir taleptir. CSR nedir sorusunun cevabını netleştirmeden komuta geçmek, çoğu zaman aşağıdaki alanlardan birinde yapılan küçük bir hataya ve sonrasında destek talebine yol açar.
Henüz bir sertifika sipariş etmediyseniz önce SSL sertifikaları genel bakış sayfamıza ya da SSL sertifikası nasıl alınır rehberimize göz atın — CSR oluşturmak bu sürecin bir adımıdır, ayrı bir ürün değildir.
CSR içinde neler var: genel anahtar, subject alanları ve SAN'lar
Bir CSR dosyasını metin editöründe açtığınızda, -----BEGIN CERTIFICATE REQUEST----- ile -----END CERTIFICATE REQUEST----- arasında base64 ile kodlanmış bir blok görürsünüz. Bu blok çözüldüğünde içinde şunlar bulunur:
- Genel anahtarınız (public key) — özel anahtarınızla (private key) birlikte üretilir ve ona matematiksel olarak bağlıdır.
- Subject alanları: Common Name (birincil alan adı, örneğin
example.com), Organization ve Organizational Unit (OV ve EV sertifikalar için), şehir/il, eyalet/bölge ve ülke. - Subject Alternative Names (SAN'lar): sertifikanın kapsaması gereken ek her alan adı —
www.example.com, ikinci bir alan adı veya bir wildcard girişi gibi. - Talebin, içindeki genel anahtarla eşleşen özel anahtarla imzalandığını kanıtlayan bir imza.
CA bu alanlara bakarak neyi doğrulayacağına karar verir — bkz. alan adı doğrulaması (DCV) rehberimiz — ve sertifikaya neyi yazacağına karar verir; talep etmediğiniz bir alan adını kendiliğinden eklemez. Hangi doğrulama seviyesine ihtiyacınız olduğundan emin değilseniz, DV SSL sayfamız yalnızca alan adı doğrulamalı bir sertifikanın neyi kapsadığını anlatır.
CSR, özel anahtarla (private key) nasıl ilişkilidir?
Özel anahtar, CSR ile aynı anda — ya da hemen öncesinde — üretilir ve oluşturulduğu sunucudan veya panelden asla dışarı çıkmamalıdır. Özel anahtar CSR dosyasının bir parçası değildir ve SSLCipher dahil kimseye gönderilmemelidir. CSR yalnızca bu anahtar çiftinin genel (public) yarısını taşır. CA sertifikanızı verdikten sonra, sertifika yalnızca gönderdiğiniz CSR'ı üreten özel anahtarla birlikte çalışır; sertifika verildikten sonra yeni bir CSR oluşturursanız sertifika ile anahtar artık eşleşmez — bu, SSL sertifikası kurulum rehberimizde anlattığımız en yaygın kurulum sorunlarından biridir.
Özel anahtarı kaybetmenin CSR'ı kaybetmekten daha kötü olmasının nedeni de budur: CSR saniyeler içinde yeniden oluşturulabilir, ama kaybedilen bir özel anahtar sertifikanın tamamen yeni bir anahtar çiftine karşı yeniden verilmesini gerektirir.
OpenSSL ile CSR oluşturma: RSA 2048 komutu
OpenSSL ile CSR oluşturmanın en yaygın yolu, RSA 2048 bitlik özel anahtar ile CSR'ı tek bir komutla birlikte üretmektir:
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csrOpenSSL sırasıyla ülke, eyalet/il, şehir, kuruluş (Organization), birim (Organizational Unit) ve Common Name alanlarını, ayrıca genellikle boş bırakılabilen isteğe bağlı bir "challenge password" sorar. RSA 2048 bit, günümüzde sertifika yetkililerinin kabul ettiği asgari anahtar boyutudur; ne seçeceğinizden emin değilseniz güvenli bir varsayılandır.
SAN'ları bir OpenSSL yapılandırma dosyasıyla eklemek
Etkileşimli sorular yalnızca tek bir Common Name alır, bu yüzden sertifika birden fazla alan adını — örneğin hem example.com hem www.example.com'u — kapsayacaksa, SAN listesini içeren küçük bir yapılandırma dosyası hazırlayıp bunu komuta vermek daha pratiktir:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
CN = example.com
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.comopenssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr -config example.com.cnfYukarıdaki bloğu example.com.cnf olarak kaydedin, her alan adı için bir DNS.n satırı ekleyin; ortaya çıkan CSR tüm SAN'ları baştan içerir — sipariş formunda bunları tek tek yeniden girmenize gerek kalmaz.
CSR oluşturma: ECDSA (P-256) ile OpenSSL örneği
ECDSA, RSA'ya günümüzde yaygın kullanılan bir alternatiftir: daha küçük bir anahtarla eşdeğer güvenlik sağlar, bu yüzden bazı yöneticiler tarafından tercih edilir. Önce bir P-256 özel anahtarı üretin, ardından CSR'ı bu anahtardan oluşturun:
openssl ecparam -name prime256v1 -genkey -noout -out example.com.keyopenssl req -new -key example.com.key -out example.com.csrİkinci komut, yukarıdaki RSA örneğiyle aynı subject alanlarını sorar. Sipariş etmeden önce, kullanmayı düşündüğünüz ürünün ECDSA anahtarını destekleyip desteklemediğini sertifika yetkilinize veya bayinize sorarak doğrulayın.
RSA mı ECDSA mı: hangi anahtar türünü seçmelisiniz?
Emin değilseniz, RSA 2048 bit daha güvenli varsayılandır: her sertifika yetkilisi, her tarayıcı ve eski iç sistemler ile API istemcileri bunu istisnasız kabul eder. ECDSA P-256, eşdeğer güvenlik için daha küçük bir CSR ve daha küçük bir sertifika üretir; bu, kısıtlı cihazlarda veya yoğun TLS el sıkışması senaryolarında işe yarayabilir, ama yalnızca bağlanması gereken her sunucunun ve istemcinin — eski iç entegrasyonlar dahil — bunu gerçekten desteklediğinden emin olduğunuzda tercih etmeye değer. Bundan emin değilseniz, bugün sipariş edeceğiniz bir sertifika için RSA daha düşük riskli seçimdir.
Oluşturduğunuz CSR'ı göndermeden önce nasıl kontrol edersiniz?
Bir CSR'ı sipariş formuna yapıştırmadan önce, gerçekten istediğiniz bilgileri içerdiğini doğrulayın:
openssl req -in example.com.csr -noout -text -verify-verify parametresi imzanın geçerli olduğunu — yani talebi oluşturan özel anahtarla eşleştiğini — doğrular; -text ise tüm subject alanlarını ve SAN'ları okunabilir biçimde yazdırır. Çıktıyı satır satır okuyun; yanlış bir Common Name'i veya eksik bir SAN'ı, sertifika size ulaşmadan önce yakalamanın en kolay yolu budur.
Kontrol panellerinde ve SSLCipher panelinde CSR oluşturma
cPanel veya Plesk gibi çoğu hosting kontrol paneli, komut satırı yerine bir form üzerinden CSR ve eşleşen özel anahtarı sizin için üretebilir: aynı subject alanlarını doldurursunuz, panel arka planda yukarıdaki OpenSSL komutlarının eşdeğerini çalıştırır. Panelin ürettiği özel anahtar, tıpkı OpenSSL ile üretilmiş gibi, o sunucuda kalır.
SSLCipher bayilik panelinde sipariş verirken iki seçeneğiniz vardır: CSR'ı ve özel anahtarı sizin için panelin oluşturmasına izin verebilir, ya da OpenSSL veya başka bir araçla kendiniz oluşturduğunuz bir CSR'ı yapıştırabilirsiniz. Rutin bir sipariş için panelde oluşturmak daha hızlıdır; özel anahtarın mutlaka hedef sunucuda üretilip saklanması gerektiği durumlarda veya SSLCipher API'si üzerinden zaten CSR üreten bir iş akışınız varsa kendi CSR'ınızı yapıştırmak daha uygundur.
CSR oluştururken yapılan yaygın hatalar
CSR ile ilgili destek taleplerinin büyük bölümü birkaç hatadan kaynaklanır:
- Yanlış Common Name. Bir yazım hatası, yanlış alan adı veya ziyaretçilerin adres çubuğuna gerçekte yazdığı adresle eşleşmeyen bir iç sunucu adı.
- www veya diğer SAN'ları unutmak. Hem
example.comhemwww.example.comkapsanacaksa ikisi de talepte yer almalıdır — sertifika yetkilisi bunu sizin için kendiliğinden eklemez. Bu, ziyaretçilerin daha sonra karşılaştığı "bağlantınız gizli değil" hatalarının sık görülen bir nedenidir. - Özel anahtarı kaybetmek. Özel anahtar olmadan, o CSR'dan verilen sertifika kullanılamaz hale gelir ve yeni bir anahtar çiftine karşı yeniden verilmesi gerekir.
- Eski bir anahtar çiftini yeniden kullanmak. Daha önce kullandığınız bir özel anahtardan yeni bir CSR oluşturmak teknik olarak çalışır, ama her sertifika için yeni bir anahtar çifti üretmek daha iyi bir uygulamadır — özellikle sertifika geçerlilik süreleri kısaldıkça bunu daha sık yapacaksınız; bkz. SSL sertifikası nasıl yenilenir rehberimiz.
- Özel anahtarı paylaşmak. Özel anahtar hiçbir zaman e-posta ile gönderilmemeli, destek talebine yapıştırılmamalı veya kimseyle — CA'nız, bayiniz ya da SSLCipher dahil — paylaşılmamalıdır.
CSR'ınızı oluşturun, doğru sertifikayı seçin
CSR küçük ve mekanik bir adımdır, ama subject alanlarını ve SAN'ları ilk seferde doğru girmek daha sonra bir yeniden verme (reissue) işleminden kurtarır. İster OpenSSL ile, ister bir kontrol panelinde, ister doğrudan SSLCipher bayilik panelinde oluşturun, kural aynıdır: özel anahtarı gizli tutun, Common Name ve SAN'ları openssl req -noout -text ile ikinci kez kontrol edin ve CSR'ı gerçekten ihtiyacınız olan sertifika türüyle eşleştirin.
CSR hazır olduğunda siparişinizi verin ve alan adının gerçekten ihtiyaç duyduğu doğrulama seviyesini, gerekiyorsa Wildcard veya Multi-Domain kapsamını, göndermeden önce seçin.
Sık sorulan sorular
01CSR ne işe yarar?
CSR, bir SSL sertifikası sipariş ederken sertifika yetkilisine ya da bayiye gönderdiğiniz taleptir. İçinde genel anahtarınız ile Common Name, SAN'lar ve OV/EV sertifikalar için kuruluş bilgileri gibi CA'nın doğrulama ve sertifika üretimi için ihtiyaç duyduğu alan adı bilgileri bulunur.
02CSR'ı OpenSSL olmadan oluşturabilir miyim?
Evet — cPanel ve Plesk gibi çoğu hosting kontrol paneli CSR ve özel anahtarı bir form üzerinden oluşturabilir, SSLCipher bayilik paneli de sipariş sırasında sizin için CSR üretebilir. OpenSSL yalnızca en yaygın komut satırı seçeneğidir ve her yerde aynı şekilde çalışır.
03CSR'ımla eşleşen özel anahtarı kaybedersem ne olur?
O CSR'dan verilen sertifika kullanılamaz hale gelir, çünkü sertifika yalnızca talebi oluşturan özel anahtarla birlikte çalışır. Yeni bir CSR ve özel anahtar çifti oluşturup sertifikanın bunlara karşı yeniden verilmesini istemeniz gerekir.
04Her yenilemede yeni bir CSR oluşturmam gerekir mi?
Zorunlu değildir — aynı anahtar çiftinden oluşturulan bir CSR teknik olarak yeniden kullanılabilir — ama her yenilemede yeni bir anahtar çifti ve CSR oluşturmak daha iyi bir uygulamadır ve çoğu panelin varsayılan davranışı budur. Sertifika geçerlilik süreleri kısaldıkça bunu daha sık yapacaksınız.