24 Şubat 2016 Çarşamba

"How to create local certificate" ve local iis'le proje geliştirirken bunu kullanmak :)


Sayın Cinaliler ve cincimeler.

Vaadimi tutuup local sertifika nasıl oluşturulur bunun yöntemini açıklama blog girdime hepiniz hoşgeldiniz. Lafı çok uzatmayacağım. Başlayalım :)

Https li site yapmak istedik. Benim için bu konu bir muamma idi. Ancak alışveriş sitelerinde olması gerekiyordu. Tabi öncesinde test etsek iyiydi. Eldi, mahkumdu, ne yapsaktı, sorsaktı. Sordum. Uğraştı.

Yani bunu yapmak için bayağı uğraştık sertifika ssl vs konularına yabancılığımız yüzünden. Araştırma aşamasında birr dolu site dolaştık. En sonunda aradığımızı bulduk. Neden? Çünkü vazgeçmemiştik. (fon müziği çalar)
(Burada bir karikatür vardı ama telif yerim diye kaldırdım. Herkese dava açıyorlarmış karikatür paylaşılıyor diye. Karikatürün doğasına hiç uymuyor bence bu tavır :-/ Enişten değiş Einstein Einstein Yine de insan gurur duyuyor. )
Söz konusu olan site şu;

http://www.mikeobrien.net/blog/creating-self-signed-wildcard/

Bu sitede adım adım zaten anlatılmış ben özetle üzerinden geçeceğim.

Windows 10 ceğizimde "C:\Program Files (x86)\Windows Kits\10\bin\x64" dizininde bir adet makecert.exe diye yardımcı programcık vaar. Bu yardımcı programcığı emellerimize alet ederek amacımıza ulaşacağız. Eğer sizde böyle bir yardımcı programcık yoksa şuradan edinebilirsiniz;

https://msdn.microsoft.com/library/windows/desktop/aa386968.aspx

Ardından cmd'mizi "Run as Administrator" ile açıp aşağıdaki komuttan kırmızıları kendimize göre revize edip çalıştıralım.

"C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -n "CN=My Company Development Root CA,O=My Company,OU=Development,L=Wallkill,S=NY,C=US" -pe -ss Root -sr LocalMachine -sky exchange -m 120 -a sha256 -len 2048 -r

Ardından da şunu aynı şekilde kırmızı yerleri revize ederek çalıştıralım;
"C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -n "CN=*.dev.somesite.net" -pe -ss My -sr LocalMachine -sky exchange -m 120 -in "My Company Development Root CA" -is Root -ir LocalMachine -a sha256 -eku 1.3.6.1.5.5.7.3.1
Örnek olarak ben şöyle yaptım;
"C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -n "CN=Localhost,O=Localhost,OU=Development,L=Mono,S=NY,C=US" -pe -ss Root -sr LocalMachine -sky exchange -m 120 -a sha256 -len 2048 -r
"C:\Program Files (x86)\Windows Kits\10\bin\x64\makecert.exe" -n "CN=*.local.com" -pe -ss My -sr LocalMachine -sky exchange -m 120 -in "Localhost" -is Root -ir LocalMachine -a sha256 -eku 1.3.6.1.5.5.7.3.1 

---------------------------------


ÖNEMLİ NOT: Bu şekıl kullanımdan kaldırılmış. (makecert.exe Deprecated ) . Bunun yerine Microsoft Powershell'de çalıştırabileceğimiz "New-SelfSignedCertificate" komutunu getirmiş.
Ancak makecert.exe'yi bir yerlerden indirip vs kullanmaya devam edenler mutlaka olacaktır ondan çözümünü kaldırmıyorum. 

Yeni yolu da paylaşmadan edemeyeceğim;

Adım adım;

# 1. Bu adımda sertifikayı oluşturuyoruz.
$certItem = New-SelfSignedCertificate -DnsName *.local.com -CertStoreLocation cert:\LocalMachine\My -KeyExportPolicy Exportable

# 2. Oluşturduğumuz sertifikayı export / import işleminde kullanacağımız şifremizi üretiyoruz.
$certPass = ConvertTo-SecureString -String "P@assw0rd" -Force -AsPlainText

# 3. Sertifikayı Export edeceğimiz klasörü oluşturuyoruz.
New-Item "C:\Certs" -Type Directory -Force

# 4. Sertifikayı C:\Certs\local.com.pfx yoluna export ediyoruz. 
$certFile = Export-PfxCertificate -Cert "cert:\LocalMachine\My\$($certItem.Thumbprint)" -Password $certPass -FilePath C:\Certs\local.com.pfx

# 5. Export ettiğimiz sertifikayı Trusted Root'a ekliyoruz.
Import-PfxCertificate –FilePath "$($certFile.FullName)" cert:\localMachine\Root -Password $certPass


PowerShell'i Administrator olarak (Sağ tuş yönetici olarak çalıştır - Run as Administrator) çalıştırıp yukarıdaki adımları tek tek yapıştırıp çalıştırıyoruz.


-----------------------------------


Daha sonra iis'te bu sertifikamızı seçebiliyor olacağız;
Şu şekıl;



Bunu bana öğrettiği için uzmanıma sonsuz saygılar, hörmetler.

Eyvallah.


trip.. trip..

:p