Kendinden imzalı joker karakter sertifikası


18

Evde pihole ayarladım, bu yüzden bir "bu site engellendi" sayfasını göstermek için kendi sunucum ile herhangi bir web sitesi için istekleri işlemek istiyorum.

Bunu herhangi bir url için kendinden imzalı bir sertifika oluşturarak ve bunu cihazıma yükleyerek yapmaya çalışıyorum. Sertifikayı oluşturmak için kullandığım komutlar:

openssl genrsa 2048 > pihole.key
openssl req -new -x509 -nodes -days 36500\
    -key pihole.key \
    -subj "/C=NL/ST=Utrecht, Inc./CN=*" \
    -reqexts SAN \
    -config <(cat /etc/ssl/openssl.cnf \
        <(printf "\n[SAN]\nsubjectAltName=DNS:*,DNS:*")) \
    -out pihole.cert
openssl x509 -noout -fingerprint -text < pihole.cert > pihole.info
cat pihole.cert pihole.info > pihole.pem
service apache2 reload

Bu sertifikayı Windows cihazıma yükledim ve Windows bunun geçerli bir sertifika olduğunu gösteriyor.

Ancak, krom bana bir NET::ERR_CERT_COMMON_NAME_INVALIDve kenar bana benzer bir hata veriyor ( DLG_FLAGS_SEC_CERT_CN_INVALID)

Bu neden? Is CN = *sadece izin verilmez? İstediğimi nasıl başarabilirim?


Yan not olarak: Büyük web siteleri için tarayıcınız, oluşturmayı başardığınız herhangi bir sertifikayı kabul etmeyecektir. Bu siteler sertifika sabitleme kullanır ve TLS sertifikalarının parmak izlerini bu tarayıcılara dahil edilmek üzere gönderir. Sertifikanız depolanan parmak iziyle eşleşmiyor ve engelleniyor. İşte daha fazla bilgi: noncombatant.org/2015/05/01/about-http-public-key-pinning
Martijn Heemels

kendinden imzalı sertifikalar keşfettiğiniz gibi sorunlu olabilir. Bunun yerine letsencrypt.org'dan "uygun" bir sertifika almaya bakabilirsiniz - bunlar ücretsizdir ve joker karakterleri destekler. Kaç tane ana bilgisayarla uğraşmaya çalıştığınıza bağlı olarak * gerçekten ihtiyacınız var, letsencrypt'ten bir (veya daha fazla) certs sizi kapsayabilir
Dave Smylie

2
@DaveSmylie bir reklam engelleyici için, alan adlarına sahip değilim.
Daniël van den Berg

1
@Stewart lütfen önceki yorumumu okuyun.
Daniël van den Berg

1
Ayrıca dikkat: bunu bir reklam engelleyici için kullanıyorsanız, alternatif bir sayfa göstermek yerine bağlantıları ilgili sunuculara sessizce bırakmak daha iyi olabilir. Modern reklamların% 90'ı başlangıçta JavaScript aracılığıyla yüklenir, bu nedenle alternatif sayfanızın sayfada gerçek bir görünüme sahip olması olası değildir. Muhtemelen, JavaScript olmayan kaynakları Javascript olarak yüklemeye çalışarak bazı şeyleri kıracaktır.
Nzall

Yanıtlar:


42

Buna izin verilmiyor. Standart TLS ana bilgisayar adı doğrulamasına protokole özgü bir ek olarak, tüm büyük web tarayıcıları (HTTPS istemcileri) temel olarak joker karakter sertifikalarını "eTLD + 1" ile sınırlamayı kabul etti - yani bir "etkili TLD" artı bir tane daha -wildcard bileşeni.

Genel olarak bu, en az iki bileşen gerektirmektedir ( *.example.nettamamdır, ancak *.netçıplak değildir *). "Etkili TLD" kuralı, bunu co.ukuygulamada bölünmez "TLD" olarak kullandıkları için bunu çok seviyeli soneklere genişletir . (Buna *.example.ac.ukizin verilir, ancak izin verilmez *.ac.uk.)

Genel sonek listesinin Chromium ve Mozilla'da nasıl uygulandığını inceleyebilirsiniz .

CA Tarayıcı Forumu Temel Gereksinimleri'nden (yalnızca genel WebPKI CA'ları için geçerli olan, ancak yine de genel uygulamayı yine de yansıtan) bir alıntısı olan Security.SE'deki ilgili tartışmaya bakın :

CA'lar SHALL, "kayıt defteri denetimli" etiketin veya "genel son ekin" hemen solundaki ilk etiket konumunda joker karakter oluştuğunda herhangi bir sertifikayı iptal eder.


Bu kısıtlamayı önlemek için, ziyaret etmeye çalıştığınız web sitesi için "istek üzerine" sertifika veren bir sertifika yetkilisi oluşturun. Bunun herhangi bir normal web sunucusunda nasıl uygulanacağını bilmiyorum, ancak bu ticari TLS müdahale sistemleri tarafından kullanılan yaygın bir yöntemdir; antivirüs programları ve diğer kötü amaçlı yazılımlar; ve Burp Proxy paketi gibi geliştirme araçları.

Örneğin, OpenResty web sunucusu (temel olarak Lgin-Nuax ile) dinamik sertifika oluşturma uygulama seçeneğine sahiptirssl_certificate_by_lua . Squid proxy ssl-bump özelliğinde sertifika taklit etmeyi destekler .

Ayrıca SAN'ların her ikisi de varsa Subject- CN'yi tamamen geçersiz kıldığını unutmayın . Bu, CN'yi dahil etmeyi çoğunlukla gereksiz hale getirir (istemci yazılımınız SAN desteğinden yoksun olmadığı sürece) ve genel CA'lar için web tarayıcıları artık kabul etmemektedir.


Daha önce bir projede bu TLD + 1 limitini ampirik olarak buldum. Yerleştirdiğiniz için teşekkürler. +1
Rui F Ribeiro

Ayrıntılı cevabınız için teşekkürler, sanırım bunu açıklıyor evet. Kullanabileceğim farklı bir yaklaşım biliyor musun?
Daniël van den Berg

26
"Ve diğer kötü amaçlı yazılımların" stratejik yerleşimi için seçildi.
Džuris

@ DaniëlvandenBerg: Gönderinin kendisinde bir tane önerdim. Az önce Nginx ve Squid örneklerine bağlantılar ekledim.
user1686

5

Bir sertifikada yalnızca tek bir joker karakter olabilir (yani hayır *.*.example.com), yalnızca tek bir etiketle eşleşebilir (yani yalnızca wwwdeğil www.example.com), yalnızca en sol konumda olabilir (yani *.www.example.comdeğil www.*.example.com) ve genel ekin içinde olamaz (yani hayır *.com).

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.