bg-tutorials

Windows’ta CSR Nasıl Oluşturulur

Bu kılavuz, işletim sistemiyle birlikte gelen araçları kullanarak Windows’ta nasıl CSR (Sertifika İmzalama İsteği) oluşturulacağını gösterir.

CSR, herkese açık anahtarınızı ve konu bilgilerinizi Sertifika Yetkilisine ileten bir PKCS #10 metin bloğudur; CA bunu imzalar ve SSL/TLS sertifikanızı size geri gönderir. Eşleşen özel anahtar, isteği oluşturan makinede kalır.

Windows, CSR oluşturmak için üç yerleşik yöntem sunar ve her biri aşağıda ele alınmıştır. İş akışınıza uygun olanı seçin:

  • Certificates MMC eklentisi (grafik arayüz), sizi bir sihirbaz üzerinden yönlendirir ve bir Subject Alternative Name eklemenizi sağlar. Bu, orijinal eğitimin ele aldığı ve çoğu kullanıcının tercih ettiği yöntemdir.
  • Bir INF dosyasıyla çalışan certreq.exe komut satırı aracı; betikleştirilebilir, SAN’ı destekler ve Windows Server üzerinde standart yöntemdir.
  • OpenSSL for Windows ikili dosyası (ayrı bir indirme), CSR’yi Linux yöneticilerinin yaptığı şekilde tam olarak üretir.

Kendi CSR iş akışına sahip bir web sunucusu çalıştırıyorsanız, genel Windows adımları yerine onu kullanın: IIS ve Microsoft Exchange için özel kılavuzlara bakın. Aşağıdaki adımlar Windows 10, Windows 11 ve Windows Server 2016’dan 2025’e kadar sürümleri kapsar; başlamadan önce yerel yönetici haklarına sahip bir hesapla oturum açın.

Certificates MMC eklentisiyle CSR oluşturma

Microsoft Management Console (MMC), desteklenen her Windows sürümüyle birlikte gelir ve SAN girişi içeren bir CSR oluşturabilen bir Create Custom Request sihirbazı sunar. Sihirbaz, yeni özel anahtarı Local Computer sertifika deposunda saklar, böylece makinedeki herhangi bir Windows hizmeti (IIS, ADFS, RD Gateway, RDP) sertifika kurulduktan sonra kullanabilir.

Adım 1: Local Computer için MMC Certificates eklentisini açın

Win + R tuşlarına basın, aşağıdaki komutu yazın ve Enter tuşuna basın:

mmc

Boş MMC konsolunda File > Add/Remove Snap-in menüsünü açın. Sol listeden Certificates seçin, Add düğmesine tıklayın, Computer account seçeneğini belirleyin, Next düğmesine tıklayın, Local computer seçili olarak bırakın ve Finish, ardından OK tıklayın. Certificates eklentisi artık Windows hizmetlerinin okuduğu Local Computer deposuna bağlanmıştır.

Adım 2: Özel bir sertifika isteği başlatın

Sol panelde Certificates (Local Computer) öğesini genişletin ve Personal üzerine sağ tıklayın. All Tasks > Advanced Operations > Create Custom Request seçeneklerini izleyin. Certificate Enrollment sihirbazı açılır. Next düğmesine tıklayın.

Select Certificate Enrollment Policy ekranında Custom Request altındaki Proceed without enrollment policy seçeneğini işaretleyin ve Next düğmesine tıklayın. Bu, Windows’a dahili bir Active Directory Certificate Services şablonuna kaydolmak yerine harici bir CA için bağımsız bir CSR oluşturmasını söyler.

Adım 3: Şablonu ve istek biçimini seçin

Custom request ekranında Template seçeneğini (No template) CNG key olarak ayarlayın, Request format alanını PKCS #10 olarak bırakın ve Next düğmesine tıklayın. CNG (Cryptography Next Generation), modern Windows anahtar sağlayıcısıdır ve yeni istekler için doğru seçimdir; eski CSP seçeneği yalnızca daha eski uygulamalarla uyumluluk için gereklidir.

Certificate Information ekranında, istek girişinin yanındaki Details okunu genişletin ve Properties düğmesine tıklayın. CSR’nin kalan kısmı Certificate Properties penceresinden yapılandırılır.

Adım 4: Subject ve Subject Alternative Names bilgilerini doldurun

General sekmesinde, sertifika deposundaki beklemedeki isteği daha sonra tanımlayabilmeniz için kolay bir ad ve isteğe bağlı bir açıklama yazın.

Subject sekmesine geçin. Subject name altında, ne yaptığınızı biliyorsanız Type seçeneğini Full DN olarak bırakın; çoğu sipariş için her bileşeni Type açılır menüsünü kullanarak tek tek ekleyin. Aşağıdaki her öznitelik için türü seçin, değeri yazın ve Add düğmesine tıklayın:

  • Common Name: güvenceye almak istediğiniz tam nitelikli alan adı, örneğin www.yourdomain.com. Joker karakterli bir sertifika için ana alan adının önüne bir yıldız işareti koyun, örneğin *.yourdomain.com.
  • Country: iki harfli ISO ülke kodu, örneğin US, GB veya DE.
  • State: eyalet veya ilin tam adı (örneğin California, CA değil).
  • Locality: kuruluşunuzun kayıtlı olduğu şehrin tam adı (örneğin San Jose, SJ değil).
  • Organization: şirketinizin tescilli hukuki adı, tam olarak kayıtlı şekliyle. OV ve EV sertifikaları için gereklidir. Domain Validation (DV) sertifikaları için bu alan göz ardı edilir, dolayısıyla herhangi bir yer tutucu değer işe yarar.

Email özniteliğini atlayın. RFC 5280’e göre, e-posta adresi içeren yeni sertifikalarda bu bilgi konu Distinguished Name’inde değil, Subject Alternative Name uzantısında (bir rfc822Name olarak) bulunmalıdır; ayrıca genel CA’lar bir TLS sertifikasının konusundan e-posta değerini kaldırabilir. Bu alanı boş bırakmak CSR’yi temiz tutar.

Aynı sekmenin Alternative name bölümünde Type seçeneğini DNS olarak ayarlayın ve sertifikanın kapsaması gereken her ana bilgisayar adını, her giriş için bir Add tıklamasıyla ekleyin. Common Name’i her zaman burada da listeleyin: tarayıcılar, .NET, Java, Go ve diğer modern TLS istemcileri ana bilgisayar adını yalnızca SAN listesine göre doğrular ve Common Name’i göz ardı eder. Tipik bir web sertifikası iki DNS girişi kullanır:

  • yourdomain.com
  • www.yourdomain.com

Joker karakterli bir sipariş için joker karakteri ve ana alan adını ekleyin: *.yourdomain.com ve yourdomain.com.

Adım 5: Anahtarı ve imzayı yapılandırın

Private Key sekmesine geçin ve her bölümü sırayla genişletin.

  • Cryptographic Service Provider: varsayılan RSA, Microsoft Software Key Storage Provider seçili olarak bırakın. Bu, RSA anahtarları için modern CNG sağlayıcısıdır.
  • Key options: Key size değerini 2048 olarak ayarlayın (mevcut genel CA asgari değeri). Politikanız daha büyük bir anahtar gerektiriyorsa yalnızca 3072 veya 4096 seçin; bunun karşılığında TLS el sıkışmaları biraz daha yavaş olur. Anahtarı yedeklemek veya oluşturulan sertifikayı başka bir sunucuya taşımak istiyorsanız Make private key exportable seçeneğini işaretleyin.
  • Select Hash Algorithm: Select hash algorithm bölümünde sha256 seçin. SHA-1 artık genel CA’lar tarafından kabul edilmiyor ve SHA-256 modern varsayılandır. Use alternate signature format onay kutusunu işaretsiz bırakın.

Özellikler penceresini kapatmak için OK düğmesine, ardından sihirbazda Next düğmesine tıklayın.

Adım 6: CSR dosyasını kaydedin

Where do you want to save the offline request? ekranında File format seçeneğini Base 64 olarak ayarlayın (CA’lar base64 kodlu PEM bekler, ikili biçim değil). Browse düğmesine tıklayın, tekrar bulabileceğiniz bir klasör seçin (özel bir C:certs klasörü veya Masaüstü, varsayılan Windows yolundan daha kolaydır), dosyaya .req veya .txt uzantılı bir ad verin ve Save düğmesine tıklayın. CSR’yi yazmak için Finish düğmesine tıklayın.

Sihirbaz, CSR’yi dosyaya yazar ve eşleşen özel anahtarı Certificates (Local Computer) > Certificate Enrollment Requests içinde saklar. Bu bekleyen isteği silmeyin: CA, verilen sertifikayı geri gönderdiğinde Windows onu bekleyen anahtarla otomatik olarak eşleştirir.

Adım 7: CSR’yi kopyalayın ve CA’ya gönderin

Kaydedilen dosyayı Notepad’de açın. Şuna benzeyen bir blok görmelisiniz:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----

Beş tireli BEGIN NEW CERTIFICATE REQUEST ve END NEW CERTIFICATE REQUEST satırları dahil olmak üzere tüm bloğu seçin, kopyalayın ve SSL sipariş formunuzdaki CSR alanına yapıştırın.

certreq.exe ve bir INF dosyasıyla CSR oluşturma

certreq.exe komut satırı yardımcı programı, Windows Server’ın her sürümüyle birlikte gelir ve Windows 10 ve 11 istemcisinde de bulunur. CSR oluşturmayı betikleştirmek, alışılmadık anahtar parametreleri ayarlamak veya isteği MMC çalıştıramayan bir uzak oturum üzerinden oluşturmak istediğinizde doğru yöntemdir. Akış üç bölümden oluşur: bir istek INF dosyası yazmak, CSR’yi oluşturmak için certreq -new komutunu çalıştırmak, ardından CSR’yi CA’nıza göndermek.

Adım 1: İstek INF dosyasını oluşturun

Notepad’i Yönetici olarak açın ve aşağıdaki dosyayı request.inf olarak kaydedin. Alan adınıza uyacak şekilde Subject satırını ve [Extensions] altındaki DNS girişlerini düzenleyin:

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=www.yourdomain.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.yourdomain.com&"
_continue_ = "dns=yourdomain.com"

Değerlerle ilgili notlar:

  • Subject: bileşenlerin virgülle ayrıldığı tek bir satır. C= içinde iki harfli ISO ülke kodunu kullanın ve eyalet ile şehir adlarını tam olarak yazın.
  • KeyLength: asgari 2048. Politikanız daha büyük bir anahtar gerektiriyorsa 3072 veya 4096 ayarlayın.
  • Exportable = TRUE: özel anahtarı verilen sertifikayla birlikte dışa aktarmanızı sağlar (yedekleme için veya ikinci bir sunucuya kurmak için). Anahtarı bu makineye kilitlemek istiyorsanız FALSE olarak ayarlayın.
  • MachineKeySet = TRUE: anahtarı, IIS gibi hizmetlerin okuduğu Local Computer deposunda saklar. Sunucu iş yükleri için bunu açık bırakın.
  • HashAlgorithm = SHA256: isteği modern varsayılan olan SHA-256 ile imzalar. Daha eski örnekler bazen varsayılan olarak SHA-1 kullanır ki bu artık genel CA’lar tarafından kabul edilmemektedir.
  • 2.5.29.17: Subject Alternative Name için OID. Ana bilgisayar adı başına bir _continue_ satırı ekleyin; son satır dışındaki her satır & ayırıcısıyla bitmelidir. Common Name’inizi de burada listeleyin, çünkü TLS istemcileri SAN listesine göre doğrulama yapar.

Adım 2: CSR’yi oluşturun

Yönetici olarak bir Command Prompt veya PowerShell penceresi açın, request.inf dosyasını içeren klasöre geçin ve şunu çalıştırın:

certreq -new request.inf request.csr

Araç, özel anahtarı Local Computer deposunda oluşturur ve PKCS #10 isteğini request.csr dosyasına yazar. Dosyayı açın, BEGIN NEW CERTIFICATE REQUEST‘ten END NEW CERTIFICATE REQUEST‘e kadar tüm bloğu kopyalayın ve sipariş formunuza yapıştırın.

CA verilen sertifikayı geri gönderdiğinde eşleştirmeyi şu şekilde tamamlayın:

certreq -accept certnew.cer

Bu, verilen sertifikayı depoda bekleyen özel anahtarla bağlar; bundan sonra sertifika, ihtiyaç duyan herhangi bir Windows hizmeti tarafından kullanılabilir.

Windows’ta OpenSSL ile CSR oluşturma

Windows OpenSSL ile birlikte gelmez, ancak sürekli bakımı yapılan bir Windows derlemesi Shining Light Productions‘tan edinilebilir. OpenSSL akışı Linux’takiyle aynıdır ve bir anahtar ile bir CSR’yi iki ayrı dosya olarak üretir; bu, sertifikayı Windows sertifika deposunu kullanmayan bir platforma (örneğin üçüncü taraf bir ters proxy, Tomcat veya özel bir uygulama) dağıtmayı planlıyorsanız kullanışlıdır.

Win64 OpenSSL Light paketini kurun (CSR işlemleri için standart yükleyici yeterlidir) ve kurulum sorduğunda OpenSSL DLL’lerini Windows sistem klasörü yerine OpenSSL bin dizinine kopyalayın. Command Prompt veya PowerShell’i açın ve OpenSSL’nin PATH içinde olduğunu doğrulayın:

openssl version

Komut bulunamazsa, kurulum klasörünü (genellikle C:Program FilesOpenSSL-Win64bin) PATH’inize ekleyin veya openssl’yi tam yol ile çağırın. Ardından CSR’yi ve anahtarı tek bir komutla oluşturun:

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.yourdomain.com" -addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Her bayrağın işlevi:

  • -newkey rsa:2048 yeni bir 2048 bitlik RSA anahtarı oluşturur. Politikanız gerektiriyorsa daha büyük bir anahtar için rsa:4096 kullanın.
  • -nodes, özel anahtarı parola olmadan yazar, böylece kullanan hizmet başlangıçta bir istem olmadan okuyabilir. OpenSSL 3.x bu bayrağı -noenc olarak yeniden adlandırdı; -nodes hâlâ çalışır ama artık kullanımdan kaldırılmış sayılır.
  • -keyout ve -out, anahtar dosyasını ve CSR dosyasını adlandırır.
  • -subj, konu bilgisini satır içinde sağlar; böylece OpenSSL etkileşimli sorular sormak için durmaz.
  • -addext “subjectAltName=…”, SAN listesini ekler. Common Name’i de burada belirtin.

OpenSSL 3.x, CSR’yi varsayılan olarak SHA-256 ile imzalar, dolayısıyla ek bir özet bayrağına gerek yoktur. Şu farklı başlığa dikkat edin: OpenSSL -----BEGIN CERTIFICATE REQUEST----- yazar, MMC sihirbazı ve certreq ise -----BEGIN NEW CERTIFICATE REQUEST----- yazar. Her ikisi de sıradan PKCS #10 istekleridir ve her CA her iki biçimi de kabul eder. Ortaya çıkan yourdomain.key dosyasını bir sır olarak ele alın: buna sahip olan herkes sertifikayı taklit edebilir.

Göndermeden önce CSR’yi doğrulayın

İsteği CA’nıza göndermeden önce Common Name, SAN girişleri, anahtar boyutu ve imza algoritmasını doğrulayın. Windows komut satırından certutil herhangi bir CSR dosyasını okur:

certutil -dump request.csr

OpenSSL kurduysanız, eşdeğer komut aynı ayrıntıları yazdırır:

openssl req -noout -text -in request.csr

Tarayıcı üzerinden mi tercih ediyorsunuz? İsteğin içeriğini SSL Dragon’ın CSR çözücüsüne yapıştırarak konu, SAN listesi, anahtar boyutu ve imza algoritmasını okuyabilirsiniz. Common Name’in istemcilerin kullanacağı ana bilgisayar adıyla eşleştiğini, gereken her adın SAN listesinde göründüğünü ve imza algoritmasının sha256WithRSAEncryption (veya daha güçlü) olduğunu doğrulayın.

CSR’yi sunucu dışında oluşturmayı tercih ediyorsanız, CSR Generator aracımız tek bir formdan bir istek (SAN dahil) oluşturur. Bunun getirdiği fark, özel anahtarın Windows deposunda değil tarayıcınızda oluşturulmasıdır; dolayısıyla CA sertifikayı verdiğinde sertifika ile anahtarı bir .pfx dosyasında birleştirip uygulamanızın sertifika yönetimi konsolundan içe aktarırsınız.

Sık Sorulan Sorular

Hangi Windows CSR yöntemini kullanmalıyım?

Local Computer sertifika deposundan okuyan bir Windows hizmetini (IIS, ADFS, RDP, RD Gateway, WinRM) güvenceye alıyorsanız MMC eklentisini veya certreq.exe‘yi kullanın: her ikisi de anahtarı doğru yerde oluşturur, böylece verilen sertifika bağlanmaya hazır olur. Windows dışı bir platform için CSR hazırlıyorsanız veya bir Linux sunucusuna ya da üçüncü taraf bir cihaza kopyalayabileceğiniz ayrı bir anahtar dosyası istiyorsanız Windows üzerinde OpenSSL kullanın. Her üç yöntemin çıktısı da her genel CA’nın kabul ettiği aynı PKCS #10 CSR’dir.

E-posta adresimi CSR konu bilgisine dahil etmeli miyim?

Hayır. RFC 5280, yeni sertifikalarda bir e-posta adresinin konu Distinguished Name’inde değil, Subject Alternative Name uzantısında bir rfc822Name olarak yer almasını gerektirir. Genel CA’lar, verilme sırasında bir TLS sertifikasının konusundan e-posta değerini kaldırabilir; dolayısıyla bunu eklemek HTTPS için hiçbir işe yaramaz. Email alanını sihirbazdan veya INF’den çıkarın.

Windows’ta CSR oluşturduktan sonra özel anahtar nerede?

MMC eklentisi veya certreq.exe ile anahtar, bekleyen bir istek olarak Certificates (Local Computer) > Certificate Enrollment Requests içinde bulunur ve kaydı tamamladığınızda verilen sertifikayla otomatik olarak eşleştirilir. OpenSSL ile anahtar, CSR’nin yanında yazılan .key dosyasıdır; onu diğer her sır gibi koruyun ve sertifikayı dağıtmadan önce yedekleyin.

Bir INF dosyası olmadan doğrudan PowerShell ile CSR oluşturabilir miyim?

PowerShell’in birinci taraf bir CSR cmdlet’i yoktur. New-SelfSignedCertificate bir anahtar çifti oluşturur, ancak genel bir CA’nın imzalayabileceği bir CSR değil, tamamlanmış kendinden imzalı bir sertifika üretir. PowerShell’den bir istek oluşturmanın desteklenen yolu, yukarıda gösterilen INF dosyasını yazmak ve üzerinde certreq.exe‘yi çağırmaktır (certreq -new request.inf request.csr). PSPKI gibi üçüncü taraf modüller certreq’i daha kullanıcı dostu bir arayüzle sarar, ancak altta yatan araç yine de certreq’tir.

Sihirbazı iptal edersem veya isteği hiç göndermezsem ne olur?

Bekleyen istek ve özel anahtarı Certificates (Local Computer) > Certificate Enrollment Requests içinde kalır. Kendi başlarına hiçbir şey yapmazlar ve hiçbir şeyi bozmazlar, ancak zamanla birikirler. MMC Certificates eklentisini açın, bekleyen istekleri gözden geçirin ve artık ihtiyacınız olmayanları silin; bu işlem eşleşen anahtarı da kaldırır.

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

A detailed image of a dragon in flight
Tarafından yazıldı

SSL Sertifikaları konusunda uzmanlaşmış deneyimli içerik yazarı. Karmaşık siber güvenlik konularını açık, ilgi çekici içeriğe dönüştürmek. Etkili anlatımlar yoluyla dijital güvenliğin geliştirilmesine katkıda bulunun.