IIS üzerinde bir web sunucum var. Bu sunucumun trafiğinin güvenli kanaldan gerçekleşmesini istiyorum. İlk iş bir sertifika talebinde (Certificate Signing Request, ya da kısaca CSR) bulunmak. Bu adımda hangi alan adına ait bir sertifika talep ettiğimiz, kendimizi nasıl tanımladığımız, sertifikanın anahtar uzunluğunu belirteceğiz. Dahası IIS (veya başka web sunucular) bir özel anahtar oluşturacak. IIS üzerinde CSR oluşturmak için sol taraftaki ağaç yapısından sunucu adını tıkladıktan sonra orta menüde IIS başlığı altında kalan Server Certificates nesnesini çift tıklayarak içine girmeli ve sağ menüde çıkan "Create Certificate Request..." bağlantısını tıklamalıyız.
ozmener.net sitem için bir sertifika istediğim için common name alanına bunu yazmalıyım. Ben wildcard sertifikası istediğim için *.ozmener.net yazdım. Wildcard sertifikalar aynı alan adına ait alt alan adlarını da kapsayan tipte sertifikalardır. Sadece www.ozmener.net için sertifika isteseydim www.ozmener.net yazabilirdim. Diğer veriler güvenli bir bağlantı ile bize ulaşan kullanıcıların beni nasıl tanımalarını istiyorsam öyle yazdığım veriler. EV (extended validation) gibi bir sertifika istemiyorsak işlem bundan ibaret. EV sertifika için burada yazanların doğru olduğunu belgelememiz gerekir.
Bir sonraki sayfada sertifikanın anahtar uzunluğunu seçiyoruz. Bu, kriptografik işlemlerin ne kadar karmaşık olacağına dair bir bilgi.
Bu adımdan sonra CSR dosyamıza bir isim vererek kaydedeceğiz. Sonra bu CSR dosyasını sertifika hizmet sağlayıcıya göndermemiz gerekecek. Sertifika üretme süreci tamamlandıktan sonra bizim elimize geçen "sertifika paketi" üreticiden üreticiye değişiklik gösterebilir ama genellikle sertifika sağlayıcının tüm zincirine ait sertifikalar gönderilir. Güncel bir işletim sistemine sahipsek ve hizmet aldığımız sertifika sağlayıcıya ait kök sertifika bilgisayarımızda yüklü ise bunlara ihtiyacımız kalmayabilir. Güncel bir bilgisayara kurulum yaptığımızı varsayarak bu adımı atlıyorum.
Sertifika geldikten sonra yine IIS'in aynı bölümünden bu sefer sağ menüden "Complete Certificate Request..." bağlantısını tıklayarak bizim için üretilen sertifika dosyasını göstermemiz gerek. Friendly name alanına ozmener.net falan yazmaya gerek yok. Burası sadece site yöneticisinin göreceği bir alan. Ben genelde WC_Comodo_2025 falan gibi sertifika tipini (wildcard), sağlayıcı adını ve yıl gibi bilgileri içeren bir etiket kullanıyorum. SSL sertifikaları Computer Certificates>Personal>Certificates altına kuruluyor. Kurulum tamamlandıktan sonra ilgili web sunucuya gelerek sağ menüden "Bindings..." bağlantısını tıklamalıyım.
Burada hedefimiz 443 portu üzerinden gerçekleşecek trafik olduğu için bu satırı çift tıklayarak açılan "Edit Site Binding" penceresinde altta "SSL Certificate" altıdaki açılan menüden yeni kurduğumuz, adı da muhtemelen WC_Comodo_2025 gibi birşey olan sertifikayı seçerek devam ediyoruz. Bundan sonra hizmetlerden birini yeniden başlatmaya falan gerek yok ama istemci bilgisayarlarda sertifikanın yerel bellekte kalmış olması ihtimaline karşı (firefox için) Ctrl+F5 yapmak gerekebilir.
Standart SSL sertifikası kurulumu buraya kadar. Wildcard sertifikamız varsa ve bu sertifikayı başka sunuculara kurmak istiyorsak ek bazı işlemler yapmamız gerekecek. Sertifika sağlayıcımızın bize ilettiği sertifikayı "CSR üretmeyen bir bilgisayara" kurmak istediğimizde hiçbir sorun çıkmadan kurabiliriz. Ancak bu sertifika en son aşamada "Edit Site Binding" penceresinde listelenmeyecektir. Bunun sebebi de eksik özel anahtarımız. Hatırlayalm, özel anahtar CSR talebinin üretildiği bilgisayarda saklanır ve sertifika sağlayıcımızın bize ilettiği sertifikanın içinde yer almaz. Bunu yapmak istiyorsak CSR dosyasını üreten bilgisayarda yeni kurduğumuz sertifikayı "Export private key" diyerek dışarıya aktarmamız ve daha sonra bunu diğer sunucuya da kurmamız gerekir.
Özel anahtarımız (private key) kritik bir bilgi. Bu bilgiyi başkalarıyla paylaşmamamız gerek. Bu amaçla dışa aktarılan dosyaya bir şifre verebiliriz.
Bu adıma dikkat. Encryption seçeneklerinde SHA1 ile biten seçim eski ve güvenli olmayan yöntem. Bir süredir bu yöntemin kullanılmaması öneriliyor. SHA256 ile biten seçenek ile devam ettim.
Ancak kurulum yaptığım bilgisayar biraz daha eski bir sunucu olduğundan şifre ile korunan sertifika dosyasını kurarken şifremin yanlış olduğuna dair bir hata ile karşılaştım. Şifremin kesinlikle doğru olduğunu biliyorum. Sonra anladım ki sebep bu sunucunun SHA256'yı desteklememsiymiş. Geri dönüp CSR'ı oluşturan bilgisayardan sertifikayı tekrar dışarı aktarıp, aktarırken de SHA1 ile şifreemeyi seçerek devam etmek zorunda kaldım.
CSR'ı oluşturan sunucudan başka bir sunucuya wildcard sertifikamı kurmanın birkaç yolu var. IIS>Server Certificates bölümünden Import etmek bunlardan biri. Ancak burada ben sertifikanın tekrar dışarı aktarılabilmesini istemediğim için alttaki kutuyu işaretlememeyi seçtim.
Bunun sonucunda da "Edit Site Binding" penceresinde yeni kurduğum ve içinde özel anahtarımın olduğu sertifikayı içermesine rağmen sertifikayı seçip OK'e bastığımda aşağıdaki gibi bir hata ekranıyla karşılaştım.
Bu hataya System olay günlüğündeki 36870 kimlik numaralı olay da eşlik eder. Burada der ki;
"TLS sunucu özel anahtarına erişirken hata oldu. Kriptografik modülden dönen hata kodu 0x8009030D, iç hata kodu da 10001. SSPI istemci süreci de System (PID:4)"
Bunun çözümünü şu adreste buldum. Dışarıya aktarılan sertifikanın anahtar yapısında bir bozulma olduğu belirtilmiş. Ya sertifikayı yüklerken "Allow this certificate to be exported" kutusunun işaretli bir şekilde içeriye aktarılması, ya da mmc > certificates kullanılarak içeriye aktarılması gerek. İkinci yöntemi seçtim.
Hiç yorum yok:
Yorum Gönder