Localhost için kendi kendine imzalanan bir sertifika nasıl oluşturabilirim?


134

Localhost'ta https / SSL'yi nasıl kullanıyorsunuz? Bölümünde ayrıntılı olarak anlatılan adımlardan geçtim. ancak bu, makinemin adı için kendinden imzalı bir sertifika oluşturuyor ve https: // localhost aracılığıyla ona göz atarken IE uyarısını alıyorum.

Bu uyarıyı önlemek için "localhost" için kendinden imzalı bir sertifika oluşturmanın bir yolu var mı?


Sertifikayı CA ​​olarak yüklediniz mi?
vcsjones

Win7 altında IIS'ye kendinden imzalı bir sertifika yükleme sürecini takip ettim. Ama bu "mymachinename" sertifikasını yaratıyor ve "localhost" için bir sertifikaya ihtiyacım var.
chris

1
Selam! Makecert kullanımdan kaldırıldığı için Auri'nin cevabını ana cevap olarak belirlemeyi düşünün.
Cevaba

Yanıtlar:


81

Bu gönderi Windows için etiketlenmiş olsa da, başka bir yerde cevaplarını görmediğim OS X ile ilgili soru. OS X'te localhost için kendinden imzalı bir sertifika oluşturma adımları şunlardır :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

İçinde Keychain Access, bu yeni localhost sertifikasına çift tıklayın. "Güven" in yanındaki oku genişletin ve "Her zaman güven" i seçin. Chrome ve Safari artık bu sertifikaya güvenmelidir. Örneğin, bu sertifikayı node.js ile kullanmak istiyorsanız:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
ssh-keygenOpenssl komutu aynı zamanda yeni bir anahtar oluşturduğundan (ve ssh tarafından oluşturulanın üzerine yazdığından) ilk komut gereksizdir .
Félix Saparelli

7
Ayrıca tamamen ekleyerek işlemini otomatik hale getirebilirsiniz -subj '/CN=localhost'için opensslargümanlar.
Félix Saparelli

8
OS X'in etrafa tıklamak yerine komut satırından ona güvenmesini sağlamak için şunları yapabilirsiniz:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
Linux için de geçerlidir. Çok teşekkürler.
Marcel

1
Tüm bu adımları izledim ve bir ERR_SSL_VERSION_OR_CIPHER_MISMATCHChrome 60 alıyorum ve Safari 10.1.2 de hoşuma gitmiyor.
styfle

61

Bu soru etiketlendiğinden IISve güvenilir bir sertifikanın nasıl alınacağına dair iyi bir cevap bulamadığım için bu konuda 2 sent vereceğim:

Öncelikle PowerShell'de @AuriRahimzadeh komutunu yönetici olarak kullanın:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Bu iyidir ancak sertifika güvenilir değildir ve aşağıdaki hataya neden olur. Bunun nedeni, kurulu olmamasıdır Trusted Root Certification Authorities.

görüntü açıklamasını buraya girin

Bunu başlayarak çözün mmc.exe.

Sonra şuraya git:

Dosya -> Ek Bileşen Ekle veya Kaldır -> Sertifikalar -> Ekle -> Bilgisayar hesabı -> Yerel bilgisayar. Bitir'e tıklayın.

PersonalKlasörü genişletin ve localhostsertifikanızı göreceksiniz :

görüntü açıklamasını buraya girin

Sertifikayı Trusted Root Certification Authorities - Certificatesklasöre kopyalayın.

Son adım açmak Internet Information Services (IIS) Managerveya basitçe yapmaktır inetmgr.exe. Oradan sitenize gidin, Bindings...ve Add...veya öğesini seçin Edit.... httpsAçılır menüden sertifikanızı ayarlayın ve seçin.

görüntü açıklamasını buraya girin

Sertifikanıza artık güveniliyor:

görüntü açıklamasını buraya girin


9
Kabul edilen cevap bu olmalı! İşe yarıyor! Localhost ve güvenilir sertifika ile uğraştıysanız. Tüm eski localhost sertifikalarını (mmc konsolu ve IIS (en iyi yönetilen sunucu) aracılığıyla kaldırdığınızdan emin olun
Tuan Jinn

Teşekkürler! Bu konuda çok fazla SO yanıtı ve blog yazısı var, ancak sertifika güven sorunları hakkında çok az konuşma var. İpucu: Belki de neden varsayılan SSL bağlantı noktası 443'ü kullanmadığınızı açıklamalısınız? Sanırım bunun nedeni, bu bağlantı noktasının genellikle başka bir işlem tarafından alınmasıdır.
HoffZ

Gerçekten güzel cevap ve 2020 itibariyle IIS'de iyi çalışıyor. Çok teşekkürler!
alessandrocb

Ayrıca hosts dosyasındaki takma adlar için de çalışır
Zef

52

Yeni selfsignedcertificate cmdlet'iyle kendinden imzalı bir sertifika oluşturmak için PowerShell'i kullanabilirsiniz:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Not: makecert.exe kullanımdan kaldırılmıştır.

Cmdlet Referansı: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


2017 itibariyle cevap bu olmalı.
Tormod Haugene

1
Takip eden ve sonuçta ortaya çıkan sertifikayı nasıl kuracağını bilmeyenler için bu videodaki adımları izleyin, benim için çalıştı! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal

6
anahtar ve crt dosyaları nerede saklanır?
woojoo666

1
@ woojoo666 -KeyLocationbayrağı ile konumu belirtebilirsiniz.
hamid

46

Bu konuda epey zaman harcadıktan sonra, kendi kendine imzalanan bir sertifika oluşturmak için IIS'yi kullanma önerilerini izlediğimde, Verilen ve Verilen'in doğru olmadığını gördüm. SelfSSL.exe, bu sorunu çözmenin anahtarıydı. Aşağıdaki web sitesi yalnızca kendinden imzalı sertifikalar yapmak için adım adım bir yaklaşım sağlamakla kalmadı, aynı zamanda Verilen ve Verilen sorunu da çözdü. İşte ben kendinden imzalı sertifikalar yapmak için bulduğumuz en iyi çözümdür. Aynı öğreticiyi video biçiminde görmeyi tercih ederseniz, burayı tıklayın .

SelfSSL'nin örnek bir kullanımı aşağıdaki gibi görünecektir:

SelfSSL /N:CN=Websiteniz.com / V: 1000 / S: 2

SelfSSL /? açıklamalı bir parametre listesi sağlayacaktır.


RobBagby.com'un makalesi benim için mükemmel çalıştı. İyi bulduk Henry.
cymorg

MEGA! Bu videonun kalitesi düşük ancak gereken her şeye sahip.
tonco

2
Robbagby sitesine bağlantı kesildi. CodeCowboyOrg
Moses Machua

Robbagby.com'daki makalenin Wayback arşivine bağlanmak için yanıt düzenlendi.
Prometheus

23

Gitmenize izin veren kendinden imzalı bir sertifika oluşturmaya çalışıyorsanız http://localhost/mysite O zaman işte onu oluşturmanın bir yolu

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

Gönderen http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
sertifikam nereye gitti: o C: \ Windows \ system32'de değil
EaterOfCode

2
Bu arada, makecert.exe aracı gelecekteki okuyucular için Visual Studio Komut istemi aracılığıyla kullanılır. Ayrıca İnternet Bilgi Hizmetleri (IIS) Kaynak Seti Araçlarını kullanabilir ve SelfSSL 1.0'ı yükleyebilirsiniz. microsoft.com/downloads/en/…
atconway

3
Hızlı cevaplar harika olsa da, her zaman yardımcı olmuyorlar. "Sertifika, SSL sunucu sertifikası olarak kullanılamaz", IIS7'de gördüğüm bir hatadır. Op ayrıca tarayıcı uyarılarından da bahsetmişti ve "Nasıl sertifika oluşturabilirim" değil?
cmroanirgo

Cert2spc adım vadesi parametresini atlayabilirsiniz pvk2pfx -spc , hem .spc hem de .cer
abatishchev

1
@EaterOfCode Mine C: \ Windows \ SysWOW64
Bay

10

Pluralsight'ın kendinden imzalı sertifikalar oluşturma aracını tavsiye ederim: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

Sertifikanızı .pfx olarak oluşturun ve IIS'ye aktarın. Ve onu güvenilir bir kök sertifika yetkilisi olarak ekleyin.


1
Her türlü PowerShell "büyüsünü" ve işe yaramayan diğer şeyleri denedikten sonra, Pluralsight'ın aracı benim için 30 saniyede bir çalışan komut dosyası oluşturdu ve bu, pizzayı yemek için geçen süreyi de içeriyor (+ indir ve yani aracı çıkarın). Hala bu eski dizüstü bilgisayarda Windows 7 çalıştırıyorum - bu benim için mükemmel bir çözümdü, teşekkürler!
Ade

1

Evet ve hayır. Kendinden imzalı sertifikalar, sertifika güvenilir bir Sertifika Yetkilisi tarafından imzalanmadığı için bu uyarı mesajına neden olur. Yerel makinenizde bu uyarıyı kaldırmayı düşünebileceğiniz birkaç seçenek vardır. Ayrıntılar için bu soruya verilen en yüksek dereceli yanıtlara bakın:

Internet Explorer 8'in kendinden imzalı bir sertifikayı kabul etmesi için ne yapmam gerekiyor?

Bu yardımcı olur umarım!


DÜZENLE:

Üzgünüm, başlangıçta localhost ile sınırlı olduğunuzun farkında değildim. Aşağıdaki bağlantıdaki "Doğru Ortak Adla Kendinden İmzalı Sertifika Oluşturun" talimatlarını izlemeyi deneyebilirsiniz.

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html


Hayır, uyarı mesajı var çünkü URL ( localhost ) makine adı altında verilen sertifika adıyla eşleşmiyor. Eğer mymachinename'e geçersem, o zaman hatayı almıyorum. Maalesef soruyu etkilemeyen nedenlerle makine adını değil localhost'u kullanmam gerekiyor.
chris


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.