bg-tutorials

lighttpd Üzerinde CSR Nasıl Oluşturulur

Bu eğitim, lighttpd web sunucusunu çalıştıran aynı sunucuda OpenSSL komut satırını kullanarak lighttpd üzerinde nasıl CSR oluşturulacağını göstermektedir. Tek bir komutla iki dosya oluşturacaksınız: yeni bir özel anahtar ve Sertifika Yetkilinize gönderdiğiniz eşleşen CSR’yi (Sertifika İmzalama Talebi).

Aşağıdaki adımlar, lighttpd paketleyen her modern Linux dağıtımında (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine) çalışır, çünkü her biri OpenSSL 1.1.1 veya OpenSSL 3.x ile birlikte gelir. Her iki sürüm de varsayılan olarak talebi SHA-256 ile imzalar, bu nedenle bir özet (digest) bayrağı eklemenize gerek yoktur. Aynı komut FreeBSD ve macOS üzerinde lighttpd ile de çalışır.

Adım 1: lighttpd sunucunuza bağlanın

macOS veya Linux’ta Terminal’i, Windows’ta PowerShell veya Windows Terminal’i açın ve SSH üzerinden sunucuya bağlanın. Kullanıcı adını ve ana bilgisayarı kendi bilgilerinizle değiştirin:

ssh your-user@your-lighttpd-server

CSR’yi sertifikayı barındıracak aynı sunucuda oluşturun. Özel anahtar, CSR’nin yanında oluşturulur ve o sunucuda kalmalıdır, bu nedenle komutu dizüstü bilgisayarınızda çalıştırıp anahtarı başka bir yere kopyalamak amacı boşa çıkarır. Ayrıca daha sonra kolayca bulabileceğiniz özel bir dizinde çalışmak isteyebilirsiniz, örneğin:

sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl

Adım 2: Özel anahtarı ve CSR’yi oluşturun

CSR’nizi başka bir araçla zaten oluşturduysanız, lighttpd üzerinde sertifika kurulumuna geçebilirsiniz.

Aşağıdaki OpenSSL komutunu çalıştırın. Bu komut, konu (subject) ve Konu Alternatif Adları’nı (SAN’lar) satır içinde sağlayarak, OpenSSL’in soru sormak için durmasını önleyerek tek bir adımda 2048 bit’lik bir RSA anahtarı ve bir CSR oluşturur:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Her bölümün ne yaptığı:

  • -newkey rsa:2048 yeni bir 2048 bit’lik RSA anahtarı oluşturur. 2048 bit, genel sertifikalar için geçerli asgari değerdir; daha büyük bir anahtar için rsa:4096 kullanabilir veya ECDSA’ya geçebilirsiniz (aşağıya bakın).
  • -nodes, özel anahtarı şifrelenmemiş bırakır böylece lighttpd, başlangıçta bir parola istemi olmadan onu okuyabilir.
  • -keyout ve -out, özel anahtar ve CSR dosyalarını adlandırır.
  • -subj, sertifikanın konusunu (subject) sağlar. Buraya yer tutucular yerine gerçek şirket adınızı, eyaletinizi ve şehrinizi girin. CN (Common Name / Ortak Ad) birincil alan adınızdır.
  • -addext “subjectAltName=…”, sertifikanın kapsaması gereken her ana bilgisayar adını listeler. Genel Sertifika Yetkilileri SAN listesine göre doğrulama yapar, bu nedenle Ortak Adı da buraya dahil edin.

yourdomain.com ifadesini her yerde gerçek alan adınızla değiştirin. Ek ana bilgisayar adlarını kapsamak için, bunları virgülle ayırarak SAN listesine ekleyin, örneğin DNS:api.yourdomain.com. Joker karakterli (wildcard) bir sertifika için, hem joker karakteri hem de sade alan adını dahil edin: DNS:*.yourdomain.com,DNS:yourdomain.com. Konu alanlarında yalnızca alfanümerik karakterler kullanın ve C alanı için resmi iki harfli ülke kodunu kullanın.

Eğer ECDSA anahtarı tercih ediyorsanız (daha küçük ve daha hızlı, P-256 yaygın olarak desteklenir), anahtarı ve CSR’yi bunun yerine şöyle oluşturun:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

lighttpd, mod_openssl aracılığıyla hem RSA hem de ECDSA sertifikalarını destekler ve iki çift ssl.pemfile ile ssl.privkey yönergesi listeleyerek her ikisini de aynı soket üzerinden sunabilirsiniz.

İsterseniz her alana tek tek yanıt vermeyi tercih ederseniz, -subj ve -addext olmadan openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr komutunu çalıştırın. OpenSSL sırayla her alanı soracaktır. Sorduğunda:

  • Country Name (C): ülkenizin iki harfli ISO kodu, örneğin US veya GB. İş Doğrulaması veya Genişletilmiş Doğrulama sertifikaları için, bu kuruluşunuzun resmi kayıtlı olduğu ülke olmalıdır.
  • State or Province Name (ST): tam ad, örneğin Tennessee. Kısaltma yapmayın.
  • Locality Name (L): şehir veya kasaba, örneğin Nashville.
  • Organization Name (O): şirketinizin resmi kayıtlı adı, örneğin Your Company LLC. Alan Doğrulaması sertifikaları için NA girebilirsiniz.
  • Organizational Unit Name (OU): bu alan kullanımdan kaldırılmıştır ve genel Sertifika Yetkilileri tarafından göz ardı edilir. Enter tuşuna basarak boş bırakın.
  • Common Name (CN): sertifikanın ait olduğu Tam Nitelikli Alan Adı, örneğin www.yourdomain.com. Joker karakterli bir sertifika için *.yourdomain.com kullanın.
  • Email Address: isteğe bağlıdır ve genel Sertifika Yetkilileri tarafından kullanılmaz. Boş bırakabilirsiniz.
  • A challenge password ve An optional company name: her ikisi de genel Sertifika Yetkilileri tarafından göz ardı edilen eski özniteliklerdir. Boş bırakın.

-addext bayrağı olmadan, ortaya çıkan CSR’de SAN girdisi olmayacaktır. Genel Sertifika Yetkilileri SAN listesine göre doğrulama yapar ve SAN’ı olmayan bir talebi reddeder (veya sessizce geçersiz kılar), bu nedenle önerilen yol yukarıdaki satır içi -subj artı -addext komutudur.

Adım 3: Dosyalarınızı bulun

Her iki dosyanın da oluşturulduğunu doğrulamak için mevcut dizini listeleyin:

ls

İki yeni dosya görmelisiniz:

  • yourdomain.key: özel anahtarınız. Bunu sunucuda tutun, güvenli bir şekilde yedekleyin ve Sertifika Yetkilisi dahil hiç kimseye göndermeyin. Anahtara sahip olan kişi sitenizin yerine geçebilir.
  • yourdomain.csr: Sertifika İmzalama Talebiniz. Bu, SSL sağlayıcısına gönderdiğiniz dosyadır.

Özel anahtarı yalnızca dosya sahibinin okuyabileceği şekilde kısıtlayın:

chmod 600 yourdomain.key

Adım 4: CSR’yi doğrulayın (isteğe bağlı ama önerilir)

Göndermeden önce, CSR’nin doğru konuyu ve SAN’ları içerdiğini ve imzasının geçerli olduğunu kontrol edin. Bu, talebi yerel olarak OpenSSL ile çözer:

openssl req -noout -text -verify -in yourdomain.csr

Subject satırının bilgilerinizi gösterdiğini, X509v3 Subject Alternative Name alanının beklediğiniz her ana bilgisayar adını listelediğini ve imza kontrolünün verify OK yazdırdığını doğrulayın. İmza algoritması sha256WithRSAEncryption (veya bir ECDSA anahtarı için ecdsa-with-SHA256) olarak okunmalıdır. Komut satırını kullanmak istemiyorsanız, aynı alanları bir tarayıcıda okumak için CSR’yi çevrimiçi CSR Çözücümüze yapıştırabilirsiniz.

Adım 5: CSR’nizi gönderin

Siparişiniz için CSR’yi kopyalamak üzere içeriğini yazdırın:

cat yourdomain.csr

Şuna benzer bir metin bloğu göreceksiniz:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

Bloğun tamamını, —–BEGIN CERTIFICATE REQUEST—– ve —–END CERTIFICATE REQUEST—– satırları dahil (her işaretçinin her iki tarafında beş tire bulunur) kopyalayın. Bu blok tamamen CSR’nizdir. Satın alma işleminiz sırasında sipariş formuna yapıştırın ve eşleşen özel anahtarı sunucuda yerinde tutun.

Komut satırını kullanmak istemiyorsanız, talebi çevrimiçi CSR Oluşturucumuzla da oluşturabilirsiniz. Bu aracın özel anahtarı tarayıcınızda oluşturduğunu unutmayın, bu nedenle o anahtarı kendiniz kaydedip sunucuya taşıyın.

Sertifika Yetkiliniz talebi doğruladıktan sonra sertifikanızı alacaksınız. Doğrulama düzeyine bağlı olarak bu, Alan Doğrulaması için birkaç dakika, İş Doğrulaması ve Genişletilmiş Doğrulama için ise birkaç iş gününe kadar sürebilir.

Adım 6: Sertifikayı lighttpd üzerine kurun

Sertifika geldiğinde, verilen sertifikayı ve ara zincirini, özel anahtarın yanına sunucuya yerleştirin, ardından TLS soket bloğunuzda lighttpd’yi bunlara yönlendirin. Güncel lighttpd’de TLS desteği mod_openssl içinde bulunur ve önerilen biçim (lighttpd 1.4.53’ün ssl.privkey özelliğini tanıtmasından bu yana) sertifika artı zinciri tek bir dosyada, özel anahtarı ise ayrı bir dosyada tutar:

server.modules += ( "mod_openssl" )

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}

ssl.pemfile dosyası, sertifikanızı ve ardından ara sertifikaları içermelidir (bunu cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem ile oluşturun). Sertifikayı ve özel anahtarı tek bir ssl.pemfile içinde birleştiren eski tek dosya biçimi, daha eski derlemelerde hâlâ çalışır, ancak ayrı dosya biçimi Sertifika Yetkililerinin dosyaları teslim etme şekliyle eşleşir ve belgelenen önerilen yöntemdir. Yapılandırmayı sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf ile test edin ve değişikliği uygulamak için lighttpd’yi yeniden başlatın. Tam iş akışı için, lighttpd üzerine SSL sertifikası nasıl kurulur rehberimize 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

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.