Etki alanı ve alt etki alanları için kendinden imzalı sertifika oluşturma - NET :: ERR_CERT_COMMON_NAME_INVALID


82

Geliştirme amacıyla Windows'ta İmzalı SSL sertifikaları oluşturmak için bu öğreticiyi takip ettim ve etki alanlarımdan biri için harika çalıştı (dns simülasyonu için hosts dosyasını kullanıyorum). Sonra birçok alt alanım olduğunu ve her biri için bir sertifika oluşturmanın baş belası olacağını düşündüm. Bu yüzden Commonserverfault'daki bazı cevaplarda önerildiği gibi alanda joker karakter kullanarak bir sertifika oluşturmayı denedim . Bunun gibi:

Common Name: *.myserver.net/CN=myserver.net

Ancak, bu sertifikayı Güvenilen Kök Sertifika Yetkilisine NET::ERR_CERT_COMMON_NAME_INVALIDaktardıktan sonra, Chrome'da ana alan adı ve tüm alt modülleri için hata alıyorum , örneğin: https://sub1.myserver.netve https://myserver.net.

Bu sunucu myserver.net olduğunu kanıtlayamadı; güvenlik sertifikası * .myserver.net / CN = myserver.net'ten alınmıştır.

Bunun nedeni bir yanlış yapılandırma veya bağlantınıza müdahale eden bir saldırgan olabilir.

Ortak Ad alanında bu hataya neden olan bir sorun mu var?


Bunu da düzeltmek için çok zaman harcadım. Cevabımı burada görün stackoverflow.com/questions/42816218/…
Alex Vasilev

Yanıtlar:


20

Rahul'un belirttiği gibi, bu yaygın bir Chrome ve bir OSX hatasıdır. Geçmişte de benzer sorunlar yaşıyordum. Aslında nihayet yerel bir siteyi iş için test ederken 2 [evet çok olmadığını biliyorum] ek tıklama yapmaktan yoruldum.

[Windows kullanarak] bu soruna olası bir geçici çözüm gelince, mevcut birçok otomatik imzalı sertifika yardımcı programından birini kullanırdım .

Önerilen Adımlar:

  1. Kendinden İmzalı bir Sertifika Oluşturun
  2. Sertifikayı Windows Sertifika Yöneticisine Aktarın
  3. Krom Sertifika Yöneticisi İçe Belgesi
    NOT: Adım 3 deneyimli sorunu çözer kez öngörülebilir gelecekte veremeyiz olmuştur bayat geçen süre dikkate alındığında ... Google adresleri hata **.

    Benim ne kadar Chrome for kullanmayı tercih olarak geliştirme, kendimi son zamanlarda Firefox Developer Edition'da buldum . bu sorunu olmayan.

    Bu yardımcı olur umarım :)

Bağlandığınız hata A) yalnızca OS X için geçerlidir ve B) sonunda "." Bulunan alan adlarıyla ilgilidir ve bunların hiçbiri @Zed için geçerli değildir.
Philip

Hmm bu hangi bağlantı olabilir?
Thomas.Donnelly

Krom böceğinin bağlantısı (98627)
Philip

Önerdiğim düzeltme ne olursa olsun, birçok kez kullandığım için Windows'ta da çalışıyor.
Thomas.Donnelly

"Chrome'u geliştirme için kullanmayı tercih etsem de son zamanlarda kendimi Firefox Developer Edition'da buldum. Bu sorun yok." burada daha fazla anlaşamadım ..
Ash


26

Çözüm, kullandığınız etki alanı adlarını "subjectAltName" (X509v3 Konu Alternatif Adı) olarak eklemektir. Bu, OpenSSL yapılandırmanızı ( /etc/ssl/openssl.cnfLinux'ta) değiştirerek ve v3_reqbölümü aşağıdaki gibi değiştirerek yapılabilir :

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = sub1.myserver.net

Bu yerindeyken, -extensions v3_reqyeni sertifikanızı oluştururken anahtarı kullanmayı unutmayın . (ayrıca bkz.OpenSSL kullanarak SubjectAltName ile nasıl kendinden imzalı bir sertifika oluşturabilirim? )


1
subjectAltName = @alt_namesTamamen kullanımı sorunumu çözdü. Daha önce DNS kimliğini yine de sağlayarak etki alanıma bağlamıştım CN=*.example.com. Ayar DNS.1 = example.comve DNS.2 = *.example.comhile yaptı. Garip olan şey (benim için) hepsinin ~ 2017-03-17 tarihine kadar çalışıp bir gün sonra durmasıydı (büyük bir Windows udate grubu çalıştırmıştı). Hiçbir şey bu sadece oldu gerçi Linux üzerinde benim için kırdı Krom , Firefox üzerinde Windows'un .
bossi

@bossi: Maalesef Chrome / Ubuntu'da bu sorunu yaşıyorum. Ve cert fantezi, tek ana bilgisayar, tek DN (dahili GitLab deposu) değildir.
Pawel Kraszewski

Bir hafta kadar önce çalıştı, sunucuda hiçbir şey değişmedi. Diğer 2 sunucu, büyük-küçük harf uyumsuzluğu nedeniyle rant yapmaya başladı (sertifika büyük harftir, Chrome adresi küçük harfe bırakır)
Pawel Kraszewski

2
@bossi Bahse girerim Windows sürümünüz beta yolundadır, değil mi? Chrome , şu anda beta sürümünde olan subjectAltName Chrome 58'den itibaren sertifikaları kullanımdan kaldırmıştır . Bu beni çok zorladı çünkü sadece onunla ilgili hiçbir şey görmemiştim, aynı zamanda hata adı da çok yanıltıcı (geçersiz olan genel isim değil!) Senin tam tersiydim; benim için sadece Linux'ta oldu, bu yüzden yerel sertifika mağazamı orada onarmaya çalışmak için saatler harcadım.
Tobias J

2
@TobyJ 58.0.3029.19 beta (64-bit)öyle. Sert ağacı doğru subjectAltName-s ile yeniden oluşturdum ve şimdi her şey çalışıyor. Ve kabul ediyorum, hata mesajı çok yanıltıcıdır çünkü bu CommonNamegeçersiz değildir . Mesajda "Sertifika eksik subjectAltName" yazarsa, herkes çok daha mutlu olur.
Pawel Kraszewski

18

openssl.confDosya oluştur :

[req]
default_bits = 2048
default_keyfile = oats.key
encrypt_key = no
utf8 = yes
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = US
ST = Cary
L = Cary
O  = BigCompany
CN = *.myserver.net

[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = *.myserver.net

Bu komutu çalıştırın:

openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout app.key -out app.crt  -config openssl.conf

Çıktı dosyaları app.crtve app.keybenim için çalışın.


2
Bir yazım hatası var DNS.1 = *.myserver.net. Olmalı DNS.2 = *.myserver.net. Benim için gayet iyi çalışıyor.
Artem Stepin

2
Windows üzerindeyseniz bu, yönetici olarak çalışan bir cmd ve şu konum kullanılarak git ile kurulan openssl kullanılarak yapılabilir: "C: \ Program Files \ Git \ usr \ bin \ openssl.exe" req -x509 -sha256 -nodes -günler 3650 -newkey rsa: 2048 -keyout app.key -out app.crt -config openssl.conf
George

CN = localhost, DNS.1 = localhost, DNS.2 = * .localhost: 8080 yazdım ve benim için çalışmıyor. Başka neyi değiştirmeliyim?
Esqarrouth

14

Kişisel joker *.example.comyok değil kök etki alanını kapsayacak example.comancak üzerinde herhangi bir varyantı kapsayacak alt gibi -Domain www.example.comveyatest.example.com

Tercih edilen yöntem, Fabian'ın Cevabında olduğu gibi Konu Alternatif Adları oluşturmaktır, ancak Chrome'un şu anda Ortak Ad'ın ek olarak Konu Alternatif Adlarından biri olarak listelenmesini gerektirdiğini unutmayın (yanıtında doğru bir şekilde gösterildiği gibi). Yakın zamanda bu sorunu keşfettim çünkü example.comSAN'larla Ortak Adım vardı www.example.comve test.example.comancak NET::ERR_CERT_COMMON_NAME_INVALIDChrome'dan uyarı aldım . Ben yeni bir Sertifika İmzalama İsteği oluşturmak zorunda example.comCommon Name hem de ve SAN'ların biri. Ardından Chrome, sertifikaya tamamen güvendi. Ve kök sertifikayı, web sitelerini tanımlamak için güvenilir bir otorite olarak Chrome'a ​​aktarmayı unutmayın.


Bunu okuyan biri barındırma için Pantheon kullanıyorsa, sertifikanızı platformlarına yüklediğinizde sertifikanızla ilişkili ortak adı yeniden oluşturuyor ve bu sorunu yaratıyor gibi görünüyor. Kurulum sırasında sertifikanın ortak adının sağlam kalıp kalmadığını görmek için size verdikleri özel statik IP'ye karşı test etmeniz gerekir.
serraosay

1
Parlak! "* .Example.com joker karakteriniz, example.com kök etki alanını kapsamaz, ancak www.example.com veya test.example.com gibi bir alt etki alanındaki herhangi bir varyantı kapsar." Benim durumumdaki sorun tam da buydu. Düzeltme hem içerecek şekilde basitçe DNS.1 = example.comve DNS.2 = *.example.comaltında [alt_names]yer openssl.cnf.
Ben Johnson

5

Chrome'da bir hata olabileceğini düşünüyorum. Uzun zaman önce benzer bir sorun vardı: Şuna bakın.

Farklı bir tarayıcıda deneyin. Bence iyi çalışması gerekiyor.


1

Bununla karşılaşan ve bunu test etme riskini kabul etmek isteyen herkes için bir çözüm var: Chrome'da Gizli moda gidin ve "Gelişmiş" i açıp "Bazı.url'ye git" seçeneğini tıklayabilirsiniz.

Bu, kendi bakımını yaptığınız ve yalnızca bir geliştirici olarak test ettiğiniz bazı web sitelerini kontrol etmeniz gerekiyorsa (ve henüz uygun geliştirme sertifikanız yoksa) yararlı olabilir.

Elbette bu, üretimde bir web sitesi kullanan KİŞİLER İÇİN DEĞİLDİR, bu hata web sitesi güvenliğiyle ilgili bir sorun olduğunu gösterir.


0

Bu hatadan sıkıldıysanız. Chrome'un böyle davranmamasını sağlayabilirsiniz. Bunun bir yol olduğunu söylemenin en iyi yolu olduğunu söylemiyorum.

Geçici bir çözüm olarak, sertifikada bir subjectAlternativeName uzantısı eksikse, sertifikada bir subjectAlternativeName uzantısı eksikse, Google Chrome'un bir sunucu sertifikasının commonName özelliğini, başarıyla doğruladığı ve yerel olarak yüklenmiş bir CA'ya zincirlediği sürece kullanmasına izin vermek için bir Windows kayıt defteri anahtarı oluşturulabilir. sertifikalar.

Veri türü: Boole [Windows: REG_DWORD] Windows kayıt defteri konumu: HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome Windows / Mac / Linux / Android tercih adı: EnableCommonNameFallbackForLocalAnchors Değer: 0x00000001 (Windows), true (Linux), true (Android), (Mac) Bir Windows kayıt defteri anahtarı oluşturmak için aşağıdaki adımları uygulamanız yeterlidir:

Not Defteri'ni açın Aşağıdaki içeriği not defterine kopyalayıp yapıştırın Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Google \ Chrome] "EnableCommonNameFallbackForLocalAnchors" = dword: 00000001 Dosyaya Git> Dosya Adı Olarak Kaydet: any_filename.reg Kayıt türü: Tüm Dosyalar

Dosya için tercih edilen bir konum seçin

Kaydet'e tıklayın

Çalıştırmak için kaydedilen dosyaya çift tıklayın

Kayıt Defteri Düzenleyicisi uyarısında Evet'e tıklayın

Bu bilgiyi Symantec destek sayfasında buldum: https://support.symantec.com/en_US/article.TECH240507.html


0

Yerel geliştirme ve test için PWA oluştururken verilen yanıtlar benim için (Chrome veya Firefox) işe yaramadı. ÜRETİM İÇİN KULLANMAYIN! Aşağıdakileri kullanabildim:

  1. Aşağıdaki seçeneklere sahip çevrimiçi sertifika araçları sitesi:
    • Genel Adlar: Sisteminizin hem "localhost" hem de IP'sini ekleyin örn. 192.168.1.12
    • Konu Alternatif Adları: "DNS" = "localhost" ve "IP" = ekleyin <your ip here, e.g. 192.168.1.12>
    • "CRS" açılır seçenekleri "Kendi Kendine İmza" olarak ayarlanmış
    • diğer tüm seçenekler varsayılandı
  2. Tüm bağlantıları indirin
  3. .P7b sertifikasını çift tıklayıp "yükle" / OSX'i seçerek Windows'a alın. / Linux?
  4. Düğüm uygulamasına sertifikalar eklendi ... Google'ın PWA örneği kullanılarak
    • const https = require('https'); const fs = require('fs');server.js dosyasının en üstüne ekleyin
    • return app.listen(PORT, () => { ... });server.js dosyasının en altında yorum yapın
    • aşağıya ekle https.createServer({ key: fs.readFileSync('./cert.key','utf8'), cert: fs.readFileSync('./cert.crt','utf8'), requestCert: false, rejectUnauthorized: false }, app).listen(PORT)

Chrome veya Firefox'ta başka hatam yok

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.