localhost için güvenilir bir kendinden imzalı SSL sertifikası oluşturun (Express / Node ile kullanım için)


130

Localhost ile kullanım için kendinden imzalı bir sertifika oluşturmaya ilişkin çeşitli talimatları izlemeye çalışırken, talimatların çoğu IIS için görünüyor, ancak Nodejs / Express kullanmaya çalışıyorum. Hiçbiri düzgün çalışmıyor çünkü sertifika kurulurken güvenilmez. Başarısız olduğunu denediğim şey:

Birisi bunu yapabilecek bir iş akışı sunabilir mi? Bir sertifika yükleyebilirim, ancak sertifikaya Chrome (v32) veya IE (v10) sürümünde güvenilmesini sağlayamıyorum.

DÜZENLEME: yorumlarda sorunun güvenilir bir sertifika-kök olmadığı önerildi. Sertifikayı IE aracılığıyla yükledim ancak hala güvenilmiyor.


Kendinden imzalı sertifikaların hiçbiri web tarayıcıları için güvenilir hale getirilemez. Güvenilir imza yetkilileri tarafından imzalanmamışlardır.

1
bu doğru değil: Kendinden imzalı sertifikanızın güvenilir olmasını sağlamak için bir kök sertifika yükleyebilirsiniz. ancak bunu düzgün yapamıyorum. Sertifika zincirini IE'de (chrome'da değil) kurabileceğinizi okudum, bu yüzden denedim ama hala tanınmıyor. Bunun localhost özelliğinden mi yoksa kendinden imzalı sertifikanın doğru olmadığından mı kaynaklandığını bilmiyorum.
JasonS

3
Chrome gibi tarayıcılarla çalışan bir kendi kendine imzalı sertifikam hiç olmadı. İşte çözümüm: local.MYDOMAIN.com için 127.0.0.1'e (localhost) işaret eden bir DNS girişi oluşturdum ve ardından sadece üretim sertifikamı kullanıyorum. Bu, üretim sertifika zincirinizle vb. Herhangi bir sorun olmadığından emin olmak gibi ek bir fayda sağlar
JasonS

Yanıtlar:


86

Yukarıdaki cevaplar kısmiydi. Bunu çalıştırmak için çok zaman harcadım, bu çılgınlık. Gelecekteki halime bir not, işte yapmanız gerekenler:

Chrome 65 ile Windows 10 üzerinde çalışıyorum. Firefox iyi davranıyor - sadece localhost'u bir güvenlik istisnası olarak onaylayın ve çalışacaktır. Chrome şunları yapmaz:

Adım 1. arka ucunuzda adlı bir klasör oluşturun security. onun içinde çalışacağız.

Adım 2.req.cnf Aşağıdaki içeriğe sahip bir istek yapılandırma dosyası oluşturun (kredi: @Anshul'a gider )

req.cnf:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

Bu alanların bir açıklaması burada .

Adım 3. Terminaldeki güvenlik klasörüne gidin ve aşağıdaki komutu yazın:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256

Adım 4. ardından securityklasörün dışında, ekspres uygulamanızda şöyle bir şey yapın: (kredi @Diego Mello'ya gider)

backend 
 /security
 /server.js

server.js:

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
        console.log('server running at ' + port)
    })

Adım 5. sunucuyu başlatın node server.jsve https: // localhost: 3000'e gidin .

Bu noktada sunucu kurulumuna sahibiz. Ancak tarayıcı bir uyarı mesajı göstermelidir.

Kendinden imzalı sertifikamızı, bir CA güvenilir Sertifika Yetkilisi olarak chrome / windows sertifika deposuna kaydetmemiz gerekiyor. (Chrome bunu ayrıca pencerelere kaydeder)

Adım 6. Chrome'da Geliştirme Araçlarını açın, Güvenlik paneline gidin, ardından Sertifikayı Görüntüle'yi tıklayın. görüntü açıklamasını buraya girin

Adım 7. Ayrıntılar paneline gidin, Dosyayı Kopyala'yı tıklayın, ardından Sertifika Verme Sihirbazı göründüğünde aşağıdaki gibi İleri'yi tıklayın:

ayrıntılara git - dosyayı kopyala - sonra dışa aktarma sihirbazında

Adım 8. DER kodlamasından çıkın, ileriye tıklayın, seçin Browse, Masaüstü gibi erişimi kolay bir klasöre koyun ve sertifikayı adlandırın localhost.cer, then click Save and then Finish.. Sertifikanızı Masaüstünde görebilmeniz gerekir.

Adım 9.chrome://settings/ URL kutusuna ekleyerek açın . Aşağıya tıklayın Advanced / Advanced Options, ardından bulmak için aşağı kaydırın Manage Certificates.

sertifikaları yönetmeyi seçin

Adım 10. Güvenilen Kök Sertifika Yetkilileri paneline gidin ve içe aktar'a tıklayın.

Güvenilen Kök Sertifika Yetkilileri paneline gidin ve içe aktar'a tıklayın

localhost.cer8. adımda ihracatını yeni bitirdiğimiz sertifikayı içe aktaracağız .

Adım 11. Gözat'a tıklayın, bulun, localhost.cervarsayılan değerleri bırakın, birkaç kez ileri tıklayın - bu uyarı görünene kadar evet'i tıklayın.

güvenlik istisnasını onaylayın

Adım 12. her şeyi kapatın ve chrome'u yeniden başlatın. Sonra, ne zaman gideceğinizi https://localhost:3000görmelisiniz: yeşili sevmelisin


Merhaba, açtığım tüm adımları tamamladığımda https://localhost:3000ve Chrome yüklemede takılı kalıyor. Herkes sebebinin ne olabileceğini söyleyebilir mi?
co.zohar

@ co.zohar konsolda herhangi bir mesaj var mı? Konsolu açmak için crl+shift+iveya tuşuna basın F12.
2018'de

1
Bunu bir ağdaki bir adres için yapıyorsanız, sertifika DNS'sini aşağıdaki gibi bir ana bilgisayar adına ayarladığımı buldum: DNS.1 = server.local Daha sonra, bağlanan makinede HOSTS dosyasını sunucu IP adresini ana bilgisayar adına işaret edecek şekilde güncelleyin, örneğin: 192.168.0.50 server.localBu, sertifika ve adresin sertifikayı eşleştirmesine ve doğrulamasına izin verin.
roskelld

@AIon konsolda hiçbir şey görünmüyor. Sayfa sadece şunu gösterir: "localhost bekleniyor ...". Hosts dosyasında herhangi bir şey yapılandırdınız mı?
co.zohar

1
Kendi soruma bir yarı yanıt buldum: CN ve DNS.1'i örneğin "local.com" gibi bir şeye değiştirirseniz ve sunucuya erişmesi gereken her bilgisayarda etc / hosts dosyasını yerel noktayı gösterecek şekilde değiştirin .com sunucunun IP'sine, bu çalışır.
TKoL

112

En kısa yol. MacOS'ta test edilmiştir, ancak diğer işletim sistemlerinde benzer şekilde çalışabilir.

Pem oluştur

> openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365

> openssl rsa -in keytmp.pem -out key.pem

Ekspres sunucunuz

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
  res.send('WORKING!')
})

const httpsOptions = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
}
const server = https.createServer(httpsOptions, app).listen(port, () => {
  console.log('server running at ' + port)
})
  • https://localhost:3000Google Chrome'da açın ve güvenli olmadığını göreceksiniz. Hala!
  • Geliştirici Araçları> Güvenlik> Sertifikayı Görüntüle'de: Resmi masaüstünüze sürükleyin ve çift tıklayın.
  • 'Ekle'yi tıklayın
  • Anahtar Zinciri Erişimi'nde bulun ve çift tıklayın
  • 'Güven'i genişletin ve' Bu sertifikayı kullanırken 'değerini' Her zaman güven 'olarak değiştirin.
  • Kimlik doğrulamanız istenebilir.
  • Sunucunuzu yeniden başlatın.
  • Tarayıcınızı yenileyin.
  • Zevk almak! :)

1
Mac'te yapmak istiyorsanız işte başka bir bağlantı: certsimple.com/blog/localhost-ssl-fix .
John

Güzel! Bu işe yaradı! Eklemek istiyorum: OpenSSL'yi buradan yükleyin: indy.fulgan.com/SSL/?C=M;O=A . .Cnf dosyasını buradan alın: ve ardından buradan yapılandırın: gist.githubusercontent.com/pandurang90/dbe6a67339747ef5bacf/raw/… ve buradan openSSL'yi yapılandırın: stackoverflow.com/questions/7360602/…
Jose A

2
Bunu Chrome 58+ için eklemek istiyorum, "Konu Alternatif Adı eksik" hatası alacaksınız. stackoverflow.com/a/42917227/1057052 . Daha fazla yardım için aşağıdaki yanıtları kontrol edin: stackoverflow.com/a/43666288/1057052 , stackoverflow.com/a/44398368/1057052
Jose A

14
Drag image to your desktop and double click it-> Masaüstüme hiçbir şey sürükleyemiyorum, sürüklenebilir değil .. imageCevherden tam olarak ne bahsediyorsunuz?
2017

7
Chrome'da "Konu Alternatif Adı eksik" in üstesinden gelmek için, openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650önerdiğiniz ilk satır yerine yapabilirsiniz . Ve ayrıca bu süreçte daha az soru soracak ...
Michael Litvin

78

Sertifika oluşturmak için openSSL'yi deneyebilirsiniz. Bir göz atın bu .

JS express sunucusuna HTTPS eklemek için bir .key ve .crt dosyasına ihtiyacınız olacak. Bunu oluşturduktan sonra, sunucuya HTTPS eklemek için bu kodu kullanın.

var https = require('https');
var fs = require('fs');
var express = require('express');

var options = {
    key: fs.readFileSync('/etc/apache2/ssl/server.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/server.crt'),
    requestCert: false,
    rejectUnauthorized: false
};


var app = express();

var server = https.createServer(options, app).listen(3000, function(){
    console.log("server started at port 3000");
});

Bu, yerel makinemde ve bunu kurduğum sunucuda iyi çalışıyor. Sunucudaki kart goDaddy'den satın alındı ​​ancak localhost'un kendi kendine imzalanan bir sertifikası vardı.

Ancak, her tarayıcı bağlantıya güvenilmiyor diyen bir hata verdi, devam etmek istiyor musunuz? Devam et'e tıkladıktan sonra iyi çalıştı.

Bu hatayı kendinden imzalı sertifika ile atlayan biri varsa, lütfen aydınlatın.


9
Sertifikanıza hala güvenilmiyor, bu yüzden anlattığımla aynı sorunu yaşıyorsunuz. Bir web hizmetini düzgün bir şekilde test etmek / hata ayıklamak için ona güvenilmeye ihtiyacım var.
JasonS

1
Yani bu sertifikanın ağda değil, yalnızca yerel makinenizde güvenilir olmasını mı istiyorsunuz?

1
cevabın üst kısmındaki bağlantı, çok eski olan 1024 bit 3DES şifrelemeyi öneriyor. Daha openssl genrsa -out key.pem 2048iyi bir anahtar için kullanmak daha iyidir.
steampowered

3
Sertifikanıza hala güvenilmiyor.
Diego Mello

2
yukarıdaki ekspres kod, yerel bir CA / güvenilir sertifika oluşturmak için github.com/FiloSottile/mkcert ( openSSL yerine) kullanarak çalışır . Yol boyunca yeşil çubuklar.
som

11

Localhost için bir SSL sertifikası nasıl oluşturulur: link

openssl genrsa -des3 -out server.key 1024

Buraya aşağıdaki adımlarda yeniden yazmanız gereken bir şifre girmeniz gerekir

openssl req -new -key server.key -out server.csr

"Ortak Ad" sorulduğunda yazın: localhost

openssl x509 -req -days 1024 -in server.csr -signkey server.key -out server.crt

1
Son 2 saattir interneti araştırdığım çözüm bu. Ubuntu'daki herkes için taşıyın cp server.crt /usr/local/share/ca-certificates/.ve sudo update-ca-certificatesArdından localhost https isteklerini NodeJS 8+ altında çalıştırın. Id de artıyor1024 to 2048
Salyangoz

6

İşte benim için işe yarayan şey

pencerelerde

1) Bunu% WINDIR% \ System32 \ drivers \ etc \ hosts dosyanıza ekleyin: 127.0.0.1 localdev.YOURSITE.net (çünkü tarayıcının 'localhost' ile sorunları olması (çapraz kaynak kodlama için)

Windows Vista ve Windows 7 Vista ve Windows 7 Kullanıcı Hesabı Denetimi'ni (UAC) kullanır, bu nedenle Not Defteri'nin Yönetici olarak çalıştırılması gerekir.

  1. Başlat -> Tüm Programlar -> Aksesuarlar'ı tıklayın

  2. Not Defteri'ne sağ tıklayın ve Yönetici olarak çalıştır'ı seçin.

  3. "Windows'un izninize ihtiyacı var" UAC penceresinde Devam'ı tıklayın.

  4. Not Defteri açıldığında Dosya -> Aç'ı tıklayın

  5. Dosya adı alanına C: \ Windows \ System32 \ Drivers \ etc \ hosts yazın

  6. Aç'ı tıklayın

  7. Bunu% WINDIR% \ System32 \ drivers \ etc \ hosts dosyanıza ekleyin: 127.0.0.1 localdev.YOURSITE.net

  8. Kayıt etmek

  9. Tarayıcıları kapatın ve yeniden başlatın

Mac veya Linux'ta:

  1. / Etc / hosts dosyasını suizinle açın
  2. Ekle 127.0.0.1 localdev.YOURSITE.net
  3. Onu kurtar

Geliştirme sırasında localhost yerine localdev.YOURSITE.net adresini kullanırsınız, bu nedenle ide'nizde çalıştır / hata ayıklama yapılandırmalarını kullanıyorsanız güncellemeyi unutmayın.

Cookiem'i oluştururken ".YOURSITE.net" 'i cookiedomain olarak kullanın (başında bir nokta ile), ardından tüm alt alan adlarıyla çalışmalıdır.

2) o localdev.url'yi kullanarak sertifikayı oluşturun

İPUCU: Windows'ta sertifika oluşturmada sorun yaşıyorsanız, bunun yerine bir VirtualBox veya Vmware makinesi kullanın.

3) sertifikayı http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/ adresinde belirtildiği gibi içe aktarın


Merhaba Troy, bunu paylaştığın için teşekkürler. Bunun işe yarayıp yaramayacağı konusunda başka birinin yorum yapması gerekecek. Çözümüm: Host dosyama dev.phantomjscloud.com'u ekledim ve ardından üretim sertifikamı kullandım. Bu, yalnızca üretim anahtarlarınızın geliştirici kutunuzda mevcut olmasını istiyorsanız yararlıdır, bu nedenle başka biri doğrulayabilirse çözümünüzün hala geçerli olabileceğini düşünüyorum
JasonS

Yerelden yerel sunucuya yerelden üretim sunucusuna güvenliğini sağlamak için, çeşitli şekillerde, benim ve ekibim için çalışıyor.
TroyWorks

Windows için git bash konsolu, buradan openssl komutlarını kullanarak harika çalışıyor . Kök sertifikayı yüklemeniz yeterlidir ve isterseniz, kendisi tarafından imzalanmış birden çok siteye özgü sertifika oluşturabilirsiniz.
Jason Goemaat

6

@FiloSottile'dan Mkcert, bu işlemi sonsuz ölçüde kolaylaştırır:

  1. Mkcert'i yükleyin , macOS / Windows / Linux için talimatlar var
  2. mkcert -install yerel bir CA oluşturmak için
  3. mkcert localhost 127.0.0.1 ::1 geçerli dizinde localhost için güvenilir bir sertifika oluşturmak için
  4. Düğüm kullanıyorsunuz (sistem kök deposunu kullanmaz), bu nedenle CA'yı bir ortam değişkeninde açıkça belirtmeniz gerekir , örneğin:export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
  5. Son olarak, çeşitli diğer yanıtlarda (örneğin aşağıda) açıklanan kurulumu kullanarak ekspres sunucunuzu çalıştırın
  6. Boom. localhost yeşilde yüzüyor.

Temel düğüm kurulumu:

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();    
const server = https.createServer({
    key: fs.readFileSync('/XXX/localhost+2-key.pem'), // where's me key?
    cert: fs.readFileSync('/XXX/localhost+2.pem'), // where's me cert?
    requestCert: false,
    rejectUnauthorized: false,
}, app).listen(10443); // get creative

Harika çalışıyor! Bu yaklaşımla, kendinden imzalı sertifikamızı, Chrome / Windows sertifika deposuna CA tarafından güvenilen bir Sertifika Yetkilisi olarak kaydetmemize gerek yoktur. Diğer cevaplarda belirtildiği gibi.
zaheer

4

OSX / Chrome üzerindeyseniz, kendinden imzalı SSL sertifikasını burada açıklandığı gibi sistem anahtar zincirinize ekleyebilirsiniz: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -Self-signed-ssl-sertifikalar

Manuel bir süreç, ama sonunda çalıştırdım. Yalnızca Ortak Ad'ın (CN) "localhost" (bağlantı noktası olmadan) olarak ayarlandığından emin olun ve sertifika eklendikten sonra, sertifikadaki tüm Güven seçeneklerinin "Her Zaman Güven" olarak ayarlandığından emin olun. Ayrıca onu "oturum açma" anahtar zincirine değil "Sistem" anahtar zincirine eklediğinizden emin olun.


IE'den bahsediyor, bu da Windows kullandığı anlamına geliyor.
2-bit

3

Düğüm kullanıyorsanız, neden onları düğüm ile oluşturmuyorsunuz? Bu modül oldukça tam özellikli görünüyor:

Anında üretmeyeceğimi unutmayın. Tutarlı bir sertifika ve anahtara sahip olmak için bir tür derleme komut dosyası oluşturun. Aksi takdirde, her seferinde yeni oluşturulan kendinden imzalı sertifikayı yetkilendirmeniz gerekir.


3

Gönderilen cevapların bazılarında bu sorunun üstesinden gelmek için benim için çok faydalı olan parçalar var. Bununla birlikte, minimum adım sayısı ve ideal olarak OpenSSL'den (Windows 10'da) kaçınmakla da ilgileniyordum .

Dolayısıyla, cevaplardan kritik bir parça (kaynak: @ TroyWorks ), hayali bir sunucu oluşturmak için HOSTS dosyanızı düzenlemeniz ve bunu 127.0.0.1 ile eşlemeniz gerektiğidir. Bu, yerel geliştirme yapacağınızı varsayar.

Benim durumumda, NodeJS'de bir web soketinin güvenliğini sağlamak için SS sertifikasını kullanıyordum ve bu soket programlı olarak (tarayıcı aracılığıyla değil) bağlıydı. Bu yüzden benim için sertifikanın uyarılar veya hatalar olmadan kabul edilmesi çok önemliydi ve buradaki kritik parça, sertifikayı uygun bir CN ile oluşturmaktı (ve elbette, yanıtlarda başka bir yerde açıklandığı gibi sertifikayı Güvenilir Yetkililere kabul etmek) . Kendinden imzalı bir sertifika oluşturmak için IIS kullanmak doğru CN'yi oluşturmaz, bu yüzden Powershell'i kullanarak aşağıdaki basit komutu keşfettim :

New-SelfSignedCertificate -DnsName "gandalf.dummy.dev" -FriendlyName "gandalf" -CertStoreLocation "cert:\LocalMachine\My"

Bunun PS Yönetici konsolunda çalıştırılması gerekir, ancak basitçe çalışır ve sertifikayı LocalMachine sertifika deposunun "Kişisel" bölümüne yerleştirir. Oluşturulduğunu şu şekilde doğrulayabilirsiniz:

ls cert:\LocalMachine\My 

Güvenmek için, bunu kopyalayın ve Sertifika Yöneticisini kullanarak "Güvenilen Kök Sertifika Yetkilileri" ne yapıştırın (Mevcut Kullanıcıya değil Yerel Makine sertifikalarına baktığınızdan emin olun!).

IIS'de bu sertifikaya bağlanırsanız, https://gandalf.dummy.dev/ adresine ulaşabilmeli ve herhangi bir uyarı olmadan güvenli bir bağlantı elde edebilmelisiniz .

Bunu NodeJS'de kullanan son parça yukarıda ve diğer SO yanıtlarında açıklanmıştır, bu nedenle bunu yalnızca Windows'ta ekleyeceğim, sertifika ve özel anahtarı birleştiren bir pfx dosyasıyla çalışmak daha kolaydır. Bir pfx'i Sertifika Yöneticisi'nden kolayca dışa aktarabilirsiniz, ancak bu, onu NodeJS'de nasıl kullandığınızı etkiler. 'Https' modülünü kullanarak bir Sunucunun örneğini oluştururken, kullanacağınız seçenekler ('anahtar' ve 'sertifika' yerine) aşağıdaki gibi 'pfx' ve 'parola' olacaktır:

var https = require('https');
var options = { 
    pfx: fs.readFileSync('mypfxfile'), 
    passphrase: 'foo' 
};
var server = https.createServer(options);

2

Windows'ta iis geliştirme sertifikasını MMC kullanarak (başlat> çalıştır> mmc) güvenilir hale getirdim, ardından sertifika ek bileşenini ekledim, "yerel bilgisayar" ı seçip varsayılanları kabul ettim. Bu sertifika eki eklendikten sonra, Kişisel'in altına bakmak için yerel bilgisayar sertifika ağacını genişletin, yerel ana makine sertifikasını seçin, sağ tıklayın> tüm görev> dışa aktar. dışa aktarma sihirbazındaki tüm varsayılanları kabul edin.

Bu dosya kaydedildikten sonra, güvenilen sertifikaları genişletin ve az önce dışa aktardığınız sertifikayı içe aktarmaya başlayın. https://localhostartık güvenlik uyarısı olmayan Chrome'da güvenilir.

Bu kılavuz çözümünü MSDN blogundan # 2 kullandım , operasyon da MMC'yi kullanması gerektiğiyle ilgili sorusunda bir bağlantı paylaştı, ancak bu benim için çalıştı. çözüm 2


2

Şuraya gidin: chrome://flags/

Etkinleştir: localhost'tan yüklenen kaynaklar için geçersiz sertifikalara izin verin.

Yeşil güvenliğe sahip değilsiniz, ancak chrome'da https: // localhost için her zaman izin verilir .


2

Bunun daha fazla yönü var.

Kendinden imzalı veya imzasız bir sertifika ile TLS'ye (bazıları sürekli SSL demeye devam eder) ulaşabilirsiniz.

Kendinden imzalı bir sertifika için yeşil bir çubuğa sahip olmak için, aynı zamanda Sertifika Yetkilisi (CA) olmanız gerekir. Yerel geliştirme kurulumumdaki yeşil çıtayı elde etme yolculuğumda bulduğum kaynakların çoğunda bu özellik eksik. CA olmak, bir sertifika oluşturmak kadar kolaydır.

Bu kaynak, hem CA sertifikasının hem de bir Sunucu sertifikasının oluşturulmasını kapsar ve kurulumumun localhost Chrome, Firefox ve Edge'de yeşil bir çubuk göstermesiyle sonuçlandı: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58

Lütfen dikkat: Chrome'da, CA Sertifikasını güvenilir yetkililerinize eklemeniz gerekir.


0

@ Alon'un ayrıntılı adımlarından bir adım daha ileriye gitmeniz ve ayrıca kendinden imzalı bir ca oluşturmanız gerekiyorsa:

https.createServer({
  key: fs.readFileSync(NODE_SSL_KEY),
  cert: fs.readFileSync(NODE_SSL_CERT),
  ca: fs.readFileSync(NODE_SSL_CA),
}, app).listen(PORT, () => {});

package.json

"setup:https": "openssl genrsa -out src/server/ssl/localhost.key 2048
&& openssl req -new -x509 -key src/server/ssl/localhost.key -out src/server/ssl/localhost.crt -config src/server/ssl/localhost.cnf
&& openssl req -new -out src/server/ssl/localhost.csr -config src/server/ssl/localhost.cnf
&& openssl x509 -req -in src/server/ssl/localhost.csr -CA src/server/ssl/localhost.crt -CAkey src/server/ssl/localhost.key -CAcreateserial -out src/server/ssl/ca.crt",

Localhost.cnf dosyasını açıklandığı gibi kullanarak :

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = UK
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
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.