Chrome'un kendinden imzalı localhost sertifikasını kabul etmesini sağlama


1210

Localhost CN için kendinden imzalı bir SSL sertifikası oluşturdum. Firefox bu sertifikayı başlangıçta beklendiği gibi şikayet ettikten sonra kabul eder. Ancak Chrome ve IE, sertifikayı Güvenilen Kökler altında sistem sertifika deposuna ekledikten sonra bile kabul etmeyi reddediyor. Chrome'un HTTPS açılır penceresinde "Sertifika bilgilerini görüntüle" yi tıkladığımda sertifika doğru bir şekilde yüklenmiş olarak listelenmiş olsa da, yine de sertifikanın güvenilir olamayacağı konusunda ısrar ediyor.

Chrome'un sertifikayı kabul etmesini ve bu sertifikayla ilgili şikayeti durdurmasını sağlamak için ne yapmam gerekir?


13
Firefox'un başlangıçta şikayette bulunduğunu söylediğinizde, bunun bir sertifika istisnası eklemenizi istediği anlamına mı geliyor? Sertifika doğru şekilde yüklendiyse bu gerçekleşmemelidir. Bana her üç tarayıcının da şikayetçi olduğunu söylüyorum, ancak Firefox şikayetini iptal etmenize izin veriyor. Belirli bir cevabım olmadığı için bunu bir yorum olarak gönderiyorum, ancak tam olarak bunu yaptım ve her üç tarayıcıda da iyi çalışıyor. Ben denemek ve ilk IE üzerinde çalışmasını öneririz, ve sonra bir kez bu mutlu diğer iki endişe. Üzgünüm, daha fazla yardım edemedim!
starskythehutch

1
DNS adlarının sunulma şekli de dahil olmak üzere iyi biçimlendirilmiş bir sertifika oluşturmanız gerekir. OpenSSL, tarayıcıları kullanıma hazır bir şekilde sunacak şekilde sunmaz. Bkz. Openssl ile kendinden imzalı bir sertifika nasıl oluşturulur? .
jww

4
Firefox mu değil sistem sertifika depolama kullanın.
curiousguy

4
Sertifikanızın imzası SHA-1 kullanıyorsa , özel sertifikanızı başarıyla ekleyebilseniz bile Chrome'un son sürümlerinde (yaklaşık 57) uyarılar görüntülenir . Ne olursa olsun, geliştirici araçları "Güvenlik" paneli sorun mesela ne daha spesifik diyecek: net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM.
SeldomNeedy

2
Geliştirici dostu olmadığından Chrome'u geliştirme amaçlı kullanmayı bıraktım. Genellikle bu durumda olan bir kişi zaten ne yaptığını bilir. Teşekkürler, ama teşekkürler. Chrome'da yeterince hayal kırıklığı yaşadım!
GTodorov

Yanıtlar:


66

2020-05-22 : Yalnızca 6 kabuk komutu ile bunu başarabilirsiniz.

Lütfen tarayıcı güvenlik ayarlarınızı değiştirmeyin.

Aşağıdaki kodla (1) kendi CA'nız olabilir, (2) ardından SSL sertifikanızı CA olarak imzalayabilirsiniz. (3) Ardından CA sertifikasını (sunucunuza giden SSL sertifikasını değil) Chrome / Chromium'a aktarın. (Evet, Linux'ta bile çalışır.)

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

Özetlemek gerekirse:

  1. CA ol
  2. CA anahtarınızı kullanarak sertifikanızı imzalayın
  3. myCA.pemChrome ayarlarınızda bir Otorite Olarak İçe Aktar (Ayarlar> Sertifikaları yönet> Otoriteler> İçe Aktar)
  4. .crtSunucunuzdaki dosyayı kullanın

Ek adımlar (en azından Mac için):

  1. "Dosya> Dosyayı içe aktar" seçeneğinden CA sertifikasını içe aktarın, ardından listede bulun, sağ tıklayın, "> Güven" i genişletin ve "Her Zaman" ı seçin
  2. Ekle extendedKeyUsage=serverAuth,clientAuthaşağıda basicConstraints=CA:FALSEve aynı etmek "COMMONNAME" set emin olun $NAMEo kurulum için soruyor ne zaman

Çalışmanızı kontrol edebilirsiniz

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt

2
@maverick tarayıcıları ve işletim sistemleri güvendikleri sınırlı sayıda CA ile gelir. Herkes bir CA olabilir, ancak herhangi birinin sertifikalarına güvenmesini sağlamak için, kişilerin bunları manuel olarak güvenilir bir CA olarak eklemelerini ister (Chrome'a ​​bir sertifikayı manuel olarak içe aktardığımızda yapmasını söylediğimiz gibi).
JellicleCat

2
Harika! Benim gibi Mac kullanıcıları için iki açıklamalar: Geçen satırda, kullanmak -days 825yerine -days 1825nedeniyle superuser.com/questions/1492643/... ve 's değerinde Anahtarlık Access içine kök sertifika almak için dikkat çekerek, sen sadece Dosyası" getirmemiz yeterlidir > Dosyayı içe aktar "seçeneğinin yanı sıra listede bulmak için sağ tıklayın,"> Güven "i genişletin ve" Her Zaman "ı seçin.
michielbdejong

2
Eğer bir ihtiyacın olursa PEM dosyası yerine bir CRT endişe yerel dev sunucu için dosyayı yok, sadece birleştirmek .crt ve .csr bir şekilde dosya ve onlara tasarrufu .pem dosyası, ve gitmek iyidir.
Kerem Baydoğan

1
SON ÇALIŞIYOR! Bu cevap için BRAVO. Lütfen myCA.pem dosyasını Chrome veya Firefox'unuza yüklemeyi unutmayın (Ayarlar> Sertifikaları yönet> Yetkililer> İçe Aktar)
Fryser wow

3
IP tabanlı LAN sunucum için DNS.1'i IP.1 olarak değiştirdim. İşe yarıyor. Teşekkürler.
dw1

766

For localhostonly:

Bunu kromunuza yapıştırmanız yeterlidir:

chrome://flags/#allow-insecure-localhost

Vurgulanan metni şöyle görmelisiniz: localhost'tan yüklenen kaynaklar için geçersiz sertifikalara izin ver

Tıklayın Enable.


3
Uyarıyı devre dışı bırakır ... aynı zamanda önbelleği de! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood

4
Gizli modda (örneğin kimliklerini değiştirmek için) krom kullanıyorsanız bu işe yaramaz, ancak aksi halde çok temiz
baywet

5
Bu - can sıkıcı kırmızı Güvenli Değil mesajına dayanabilirseniz. Aksi takdirde, saatler süren gizemli açılımlar, Chrome'daki dahili sertifika yöneticisi ile uğraşmaya çalışıyor.
timbo

10
Bu cevabın neden oylandığını bilmiyorum, ancak Geçersiz sertifika ile kendinden imzalı sertifika arasında bir fark var. Soru kendinden imzalı sertifika ile ilgilidir.
Mehdi

2
Benim için hiç çalışmadı. Benim için işe yarayan şu cevapla açıklandığı gibi, topicAltName dahil olmak üzere kendinden imzalı bir sertifika oluşturmaktı: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew

507

Bu benim için çalıştı:

  1. Chrome'u kullanarak, HTTPS aracılığıyla sunucunuzdaki bir sayfaya basın ve kırmızı uyarı sayfasını geçmeye devam edin (bunu henüz yapmadığınız varsayılarak).
  2. Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Click Authoritiessekmesini ve sertifikaya verdiği Örgütü Adı altında sertifikasını bulmak için aşağı kaydırın.
  4. Seçin, Düzenle'yi tıklayın ( NOT : Chrome'un son sürümlerinde düğme şimdi "Düzenle" yerine "Gelişmiş" dir), tüm kutuları işaretleyin ve Tamam'ı tıklayın. Chrome'u yeniden başlatmanız gerekebilir.

Şimdi sayfalarınızda güzel yeşil kilidi almalısınız.

DÜZENLEME: Bunu yeni bir makinede yeniden denedim ve yalnızca güvenilmeyen kırmızı sertifika sayfasından devam ederek sertifika Sertifikaları Yönet penceresinde görünmedi. Aşağıdakileri yapmak zorunda kaldım:

  1. Güvenilmeyen sertifikanın bulunduğu sayfada ( https://kırmızı ile çarpı işaretli) kilit> Sertifika Bilgileri'ni tıklayın. NOT: kromun yeni sürümlerinde, açmanız Developer Tools > Securityve seçmeniz gerekir View certificate.
  2. Simgesini tıklayın Details tab > Export. PKCS #7, single certificateDosya biçimi olarak seçin .
  3. Ardından Sertifikaları Yönet sayfasına ulaşmak için orijinal talimatlarımı uygulayın. Simgesini tıklayın Authorities tab > Importve sertifikayı dışa aktardığınız dosyayı seçin PKCS #7, single certificate ve dosya türü olarak seçtiğinizden emin olun .
  4. Sertifika deposu istenirse Güvenilen Kök Sertifika Yetkilileri'ni seçin
  5. Tüm kutuları işaretleyin ve Tamam'ı tıklayın. Chrome'u yeniden başlatın.

143
Bunu bir Linux makinesinde denedim, ancak xxx.xxx.com: Bir Sertifika Yetkilisi değil, içe aktarmanın başarısız olduğunu söyledi.
matt

15
Teşekkürler @kellen .. Ancak, Chrome Sürüm 29.0.1547.57 beta kullanıldığında, Sertifika Bilgileri'nin hiçbir yerinde "Dışa Aktar" seçeneği görünmüyor. Bununla birlikte, bir "Ayrıntılar" bölümü var, ancak bir Sekme şeklinde değil. Daraltılabilir / genişletilebilir bir blok olarak görünür. i.imgur.com/dDmNEIh.png
cavalcade

20
Chrome 37'de Exportartık yararlı, açıklayıcı bir düğme yok, Bu harika Copy to filedüğmenin yerini alıyor gibi görünüyor . Neden 'ihracat' tutulmadı, zihin sadece boggles
kolin

13
@ Jakobud, sadece sertifika sembolünü masaüstüne sürükleyin veya dışa aktarın. Ancak, yanıtın geri kalanı OS X (Yosemite) üzerinde anlayabildiğim kadarıyla çalışmıyor (Chrome 39).
db

33
Chrome 56'dan itibaren Windows'ta SSL sertifika ayarlarına erişmek için Geliştirici Araçları'nı (CTRL + ÜST KRKT + i) kullanmanız, "Güvenlik" sekmesine gitmeniz ve "Sertifikayı Görüntüle" düğmesini tıklamanız gerekir.
void.pointer

167

KROM 58+ İÇİN GÜNCELLEME (BÜLTEN 2017-04-19)

Chrome 58'den itibaren, ana makineyi yalnızca commonName kaldırıldı . Sertifikalar artık subjectAltNameana bilgisayarlarını tanımlamak için kullanılmalıdır . Daha fazla tartışmaya ve hata izleyiciye buradan bakın . Geçmişte, subjectAltNameyalnızca çok hostlu sertifikalar için kullanılıyordu , bu nedenle bazı dahili CA araçları bunları içermiyordu.

Kendinden imzalı sertifikalarınız geçmişte iyi çalıştı, ancak aniden Chrome 58'de hata oluşturmaya başladıysa, bu yüzden.

Dolayısıyla, kendinden imzalı sertifikanızı (veya kendinden imzalı bir CA tarafından imzalanan sertifikayı) oluşturmak için hangi yöntemi kullanırsanız kullanın, sunucunun sertifikasında, yalnızca tek bir ana bilgisayar için olsa bilesubjectAltName , doğru DNSve / veya IPgiriş / girişleri içeren bir .

Openssl için bu, , OpenSSL yapılandırmanızın ( /etc/ssl/openssl.cnfUbuntu'da) tek bir ana bilgisayar için aşağıdakine benzer bir şey olması gerektiği :

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com

veya birden çok ana bilgisayar için:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

(F12 altındaki "Güvenlik" sekmesine taşındı) Chrome'un sertifika görüntüleyicinizde bunu altında listelenen görmelisiniz Extensionsolarak Certificate Subject Alternative Name:

Chrome sertifika görüntüleyici


12
Chrome 58+ güncellemesiyle ilgili yayın gönderdiğiniz için teşekkür ederiz! Windows'da SAN içeren kendinden imzalı bir sertifika oluşturmak isteyen kişiler için kolay bir yol New-SelfSignedCertificate PowerShell komutunu kullanmaktır. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO

3
@ DANO TEŞEKKÜRLER! Diğer geçici çözümlerin hiçbiri benim için Win10'da çalışmıyor. En azından Powershell'in geçerli sertifikalar oluşturduğunu bilmek güzel!
Brian Donahue

1
Chrome 58+ için Reddit'te bir çözüm buldu ve işe yarıyor! Yönetici komut isteminde: reg add HKLM \ Software \ Policies \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson

3
Linux'ta politika oluşturmak için, /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsonşu içeriklerle bir politika dosyası oluşturmanız gerekir : { "EnableCommonNameFallbackForLocalAnchors": true }
seanf

5
"Chrome'un sertifika görüntüleyicisinde (F12 altında" Güvenlik "sekmesine taşındı) " Extensionsolarak listelendiğini görmelisiniz Certificate Subject Alternative Name". F12 geliştirici araçlarında (Chrome 62) Güvenlik sekmesini açtığımda "Uzantılar" bölümünü görmüyorum. Başka bir yere mi taşındı?
Thunderforge

143

Mac'te, kendinden imzalı sertifikayı Sistem anahtarlığına eklemek için Anahtarlık Erişimi yardımcı programını kullanabilirsiniz; Chrome bunu kabul eder. Adım adım talimatları burada buldum:

Google Chrome, Mac OS X ve Kendinden İmzalı SSL Sertifikaları

Temelde:

  1. kilit simgesini bir X işaretiyle çift tıklayın ve sertifika simgesini masaüstüne sürükleyip bırakın,
  2. bu dosyayı aç (.cer uzantısıyla biten); bu, sertifikayı onaylamanızı sağlayan anahtarlık uygulamasını açar.

12
Önemli olması için bunun etkili olması için Chrome'u yeniden başlatmanız gerekebilir.
Xiong Chiamiov

10
Sertifika tercihlerini düzenlemek ve SSL'ye manuel olarak güvenmek zorunda
kaldım

1
Bu benim için Yosemite, 10.10.5, Chrome Sürüm 46.0.2490.80 (64 bit) üzerinde çalıştı. Teşekkürler!
romellem

2
El Capitan üzerinde çalıştı, yeniden başlatma gerekmez. Sertifikayı ekledim, üzerine tıkladım, Güven açılır menüsünü genişlettim Always Trustve SSL bölümü olarak ayarladım . Temelde @NeDark ne dedi.
Tom

1
Sertifikayı masaüstünden Keychain'e sürükleyip bırakmam ve ardından onayı yapmam gerekiyordu.
jmq

130

Sayfanın herhangi bir yerini tıklayın ve bir BYPASS_SEQUENCE yazın

" thisisunsafe", Chrome 65 sürümü için bir BYPASS_SEQUENCE

" badidea" Chrome sürüm 62 - 64.

" danger", Chrome'un önceki sürümlerinde çalışırdı

Giriş alanını aramanıza gerek yoktur, sadece yazın. Garip geliyor ama çalışıyor.

Mac High Sierra'da denedim.

Tekrar değiştirip değiştirmediklerini tekrar kontrol etmek için Son krom Kaynak Kodu'na gidin

BYPASS_SEQUENCE'ı aramak için şu anda şöyle görünüyor:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

Şimdi kamufle edilmişler, ancak gerçek BYPASS_SEQUENCE'ı görmek için bir tarayıcı konsolunda aşağıdaki satırı çalıştırabilirsiniz.

console.log(window.atob('dGhpc2lzdW5zYWZl'));

6
wtf, teşekkürler bu benim için çalıştı ubuntu 16.04 63.0.3239.84
verir

8
Bu kod yeni sürümden beri değiştirildi. Yeni ifadethisisunsafe
The Java Guy

6
Windows 10'da Chrome 65'de, yazmanın thisisunsafeyalnızca bu siteyi istisnalara ekleme etkisi var gibi görünüyor. (Adres çubuğunda hala kırmızı renkte "Güvenli değil" yazıyor.)
Ryan

2
Bu işe yarıyor ama sadece ilk yük için, sayfada gezinirseniz tekrar bupass_squence yazmalısınız
talsibony

"thisisunsafe" BYPASS_SEQUENCE, bu sayfadan Mac Chrome 72'de benim için çalışan tek şeydi. Kendinden imzalı sertifikamı oluşturmaya zahmet etmeme gerek yok gibi hissediyorum ...!
Jono

95

Linux

Linux kullanıyorsanız, bu resmi wiki sayfalarını da takip edebilirsiniz:

Temelde:

  • X ile kilit simgesini tıklayın,
  • Sertifika Bilgilerini seçin
  • Ayrıntılar sekmesine git
  • Dışa aktar ... 'ı tıklayın (dosya olarak kaydet)

Şimdi, aşağıdaki komut sertifikayı ekleyecektir (YOUR_FILE dışa aktarılan dosyanızdır):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

Tüm sertifikalarınızı listelemek için aşağıdaki komutu çalıştırın:

certutil -d sql:$HOME/.pki/nssdb -L

Hala çalışmıyorsa, bu hatadan etkilenebilirsiniz: Sorun 55050: Ubuntu SSL hatası 8179

Not: libnss3-toolsYukarıdaki komutları kullanabilmeniz için lütfen bu dosyaya sahip olduğunuzdan emin olun .

Eğer yoksa, lütfen şu şekilde yükleyin:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

Bonus olarak, aşağıdaki kullanışlı komut dosyalarını kullanabilirsiniz:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

Kullanımı:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

Sorun giderme

  • Chrome'u --auto-ssl-client-authparametre ile çalıştır

    google-chrome --auto-ssl-client-auth


Mükemmel, senaryonuzu seviyorum. Yine de QUIT'e ihtiyacınız yok (zaten QUIT gibi bir HTTP komutu yok) ve sed'e de ihtiyacınız yok, nss araçları sertifikayı BEGIN ve END CERT arasında filtreleyebilir. Yani bu download_cert.shsadece şu olabilir:echo | openssl s_client -connect $1:443
Paul Tobias

Diğer seçenekleri denedim, ancak şu anda Chrome 4x'te yerleşik araçlar kullanarak herhangi bir mağazaya almayı reddetti linux için çalışıyor.
Kendrick

93

Mac'te, aşağıdakileri yaparak sistem düzeyinde Chrome ve Safari tarafından tamamen güvenilen bir sertifika oluşturabilirsiniz:

    # create a root authority cert
    ./create_root_cert_and_key.sh

    # create a wildcard cert for mysite.com
    ./create_certificate_for_domain.sh mysite.com

    # or create a cert for www.mysite.com, no wildcards
    ./create_certificate_for_domain.sh www.mysite.com www.mysite.com

Yukarıdaki kullanımlar aşağıdaki komut ve destekleyici bir dosya v3.ext, hiç hataları eksik konu alternatif bir isim kaçınmak

Kendi kök yetkilinizi kullanarak tamamen güvenilen yeni bir kendinden imzalı sertifika oluşturmak istiyorsanız, bu komut dosyalarını kullanarak bunu yapabilirsiniz.

create_root_cert_and_key.sh

    #!/usr/bin/env bash
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

    #!/usr/bin/env bash

    if [ -z "$1" ]
    then
      echo "Please supply a subdomain to create a certificate for";
      echo "e.g. www.mysite.com"
      exit;
    fi

    if [ ! -f rootCA.pem ]; then
      echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
      exit;
    fi
    if [ ! -f v3.ext ]; then
      echo 'Please download the "v3.ext" file and try again!'
      exit;
    fi

    # Create a new private key if one doesnt exist, or use the xeisting one if it does
    if [ -f device.key ]; then
      KEY_OPT="-key"
    else
      KEY_OPT="-keyout"
    fi

    DOMAIN=$1
    COMMON_NAME=${2:-*.$1}
    SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
    NUM_OF_DAYS=825
    openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
    cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

    # move output files to final filenames
    mv device.csr "$DOMAIN.csr"
    cp device.crt "$DOMAIN.crt"

    # remove temp file
    rm -f device.crt;

    echo 
    echo "###########################################################################"
    echo Done! 
    echo "###########################################################################"
    echo "To use these files on your server, simply copy both $DOMAIN.csr and"
    echo "device.key to your webserver, and use like so (if Apache, for example)"
    echo 
    echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
    echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = %%DOMAIN%%

Bir adım daha - Kendinden imzalı sertifikalar Chrome / Safari'de tamamen güvenilir hale nasıl getirilir?

Kendinden imzalı sertifikaların Chrome ve Safari'de TAM güvenilir olmasını sağlamak için Mac'inize yeni bir sertifika yetkilisi aktarmanız gerekir. Bunu yapmak için bu talimatları veya mitmproxy web sitesindeki bu genel işlemle ilgili daha ayrıntılı talimatları izleyin :

Komut satırında, parolanızı girmenizi isteyen bu komutu kullanarak bunu 2 yoldan biriyle yapabilirsiniz:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

veya Keychain Accessuygulamayı kullanarak :

  1. Açık Anahtarlık Erişimi
  2. "Anahtarlıklar" listesinden "Sistem" i seçin
  3. "Kategori" listesinden "Sertifikalar" ı seçin
  4. "Dosya | Öğeleri İçe Aktar ..." ı seçin
  5. Yukarıda oluşturulan dosyaya göz atın, "rootCA.pem" dosyasını seçin ve "Aç" ı tıklayın.
  6. Yeni alınan sertifikanızı "Sertifikalar" listesinden seçin.
  7. "İ" düğmesini tıklayın veya sertifikanızı sağ tıklayın ve "Bilgi Al" ı seçin
  8. "Güven" seçeneğini genişletin
  9. "Bu sertifikayı kullanırken" seçeneğini "Her Zaman Güven" olarak değiştirin
  10. İletişim kutusunu kapatın, parolanızı girmeniz istenir.
  11. Hedef alan adınızı kullanan tüm sekmeleri kapatıp yeniden açın; güvenli bir şekilde yüklenecektir!

ve bonus olarak, sertifikalara güvenmek için java istemcilerine ihtiyacınız varsa, bunu cer anahtarlarınızı java anahtar deposuna aktararak yapabilirsiniz. Bunun, sertifikanın zaten varsa anahtar deposundan kaldırılacağını unutmayın; bir şeylerin değişmesi durumunda güncellemesi gerekir. Elbette bunu sadece ithal edilenler için yapar.

import_certs_in_current_folder_into_java_keystore.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

Çalışırken "Private Key rootCA.key açılırken hata oluştu" hatası var $ ./create_root_cert_and_key.sh. macOS 10.12.4 ve OpenSSL 0.9.8zh 14 Ocak 2016.
donut

1
Daha $ openssl genrsa -out rootCA.key 2048önce $ ./create_root_cert_and_key.shçalıştığım "Özel Anahtar rootCA.key açılırken hata oluştu" hatası giderildi.
donut

@donut - bunu işaret ettiğiniz için teşekkürler - bu satırı çoğalttım, bu yüzden gördüğünüz soruna neden olduğundan eminim ...
Brad Parks

openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csr"PRivate Key device.key açılırken hata oluştu" hatasını veriyor Bu komutun yaratılması gerektiğini düşündüm device.key, ancak bir nedenden dolayı onu okumaya çalışıyor gibi görünüyor
Lenny

2
(Vaka başkasının hit bu aşamasında) çözümü bunu düşündüm değiştirmekti -keyiçin -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny

90

GÜNCELLEME 11/2017: Bu yanıt muhtemelen Chrome'un daha yeni sürümlerinde çalışmayacaktır.

GÜNCELLEME 02/2016: Mac Kullanıcıları için Daha İyi Talimatları Burada bulabilirsiniz .

  1. Eklemek istediğiniz sitede, adres çubuğundaki kırmızı kilit simgesini sağ tıklayın:resim açıklamasını buraya girin

    1. Bağlantı etiketli sekmeyi ve ardından Sertifika Bilgileri'ni tıklayın.

    2. Click Ayrıntılar sekmesini, düğme tıklayın ... Dosya Kopyala . Bu, Sertifika Verme Sihirbazı'nı açar, Dosya Biçimini Ver ekranına ulaşmak için İleri'ye tıklayın .

    3. Seç DER kodlanmış ikili X.509 (.CER) , tıklayın İleri

    4. Gözat ... 'ı tıklayın ve dosyayı bilgisayarınıza kaydedin. Açıklayıcı bir ad verin. Click İleri , ardından Son'u .

    5. Chrome ayarlarını açın, en alta kaydırın ve Gelişmiş ayarları göster ... seçeneğini tıklayın .

    6. HTTPS / SSL altında , Sertifikaları yönet ... seçeneğini tıklayın .

    7. Click Güvenilen Kök Sertifika Yetkilileri sekmesini, ardından Al ... düğmesine. Sertifika Alma Sihirbazı açılır. İçe Aktarılacak Dosya ekranına gitmek için İleri'yi tıklayın .

    8. Gözat ... 'ı tıklayın ve daha önce kaydettiğiniz sertifika dosyasını seçin, ardından İleri' yi tıklayın .

    9. Seç aşağıdaki depolama tüm sertifikaları . Seçilen mağaza Güvenilen Kök Sertifika Yetkilileri olmalıdır . Değilse, Gözat ... 'ı tıklayın ve seçin. İleri ve Son'u tıklayın

    10. Güvenlik uyarısında Evet'i tıklatın .

    11. Chrome'u yeniden başlatın.


2
@AJeneral Evet, Chrome tekrar değişti. Bu makaledeki talimatlar son zamanlarda benim için çalıştı.
kmgdev

2
Bu seçenek, bu yorumun tarihinden itibaren en son Mac Chrome'da mevcut değildir.
y3sh

1
@kgrote, Chrome'un kendi sertifika deposu yok. Tek yaptığı şey, Windows'u eklemek ve kaldırmaktır. Bu nedenle, daha iyi bir yol, sadece certmgr.msccerts eklemek ve silmek için kullanmaktır .
Pacerier

1
Benim için çalıştım, teşekkürler. Chrome'u yeniden başlatmak zorunda kaldım ve en önemlisi sertifikamın 2017'den önce sona ermesi gerekiyordu. SHA-1 şeyler.
ioanb7

1
Krom yine değişti! Şimdi "Adres çubuğunda X ile küçük kilidi tıklayın. Bu küçük bir bilgi ekranı getirecektir." çalışmıyor.
Bruno Bronosky

59

Eğer değilseniz bir mac ve ihracat sekmesini gördükten ya da nasıl bu benim için çalıştı sertifika almak için değil:

  1. Https: // öncesindeki kilidi tıklayın
  2. "Bağlantı" sekmesine gidin
  3. "Sertifika Bilgileri" ni tıklayın

    Şimdi şunu görmelisin: Elbette farklı bilgileriniz ve sizinki henüz güvenilir olarak işaretlenmelidir (aksi takdirde muhtemelen burada olmazsınız)

  4. Masaüstünüzü (veya herhangi bir yeri) yapmak için bu küçük sertifika simgesini sürükleyin.

  5. İndirilen .cer dosyasını çift tıklayın, bu anahtar zincirinize içe aktarmalı ve sertifika listenize anahtar zinciri erişimini açmalıdır.

    Bazı durumlarda bu yeterlidir ve artık sayfayı yenileyebilirsiniz.

    Aksi takdirde:

  6. Yeni eklenen sertifikayı çift tıklayın.
  7. Güven açılır menüsünde "Bu sertifikayı kullanırken" seçeneğini "Her Zaman Güven" olarak değiştirin

Şimdi söz konusu sayfayı yeniden yükleyin ve sorun çözülmelidir! Bu yardımcı olur umarım.


Wolph'dan Düzenle

Bunu biraz daha kolaylaştırmak için aşağıdaki komut dosyasını ( kaynak ) kullanabilirsiniz:

  1. Aşağıdaki kaydet senaryoyu olarak whitelist_ssl_certificate.ssh:

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
    echo "$SERVERNAME"
    
    if [[ "$SERVERNAME" =~ .*\..* ]]; then
        echo "Adding certificate for $SERVERNAME"
        echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
        sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
    else
        echo "Usage: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
  2. Komut dosyasını çalıştırılabilir yapın (kabuktan):

    chmod +x whitelist_ssl_certificate.ssh
  3. İstediğiniz alan için komut dosyasını çalıştırın (tam URL çalışmalarının kopyalanması / yapıştırılması):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever

1
Bu yaklaşım OS X Mavericks'te benim için çalıştı, yukarıdaki üst cevapta açıklandığı gibi Dışa Aktar seçeneği yoktu .
Kevin Leary

Harika çalışıyor. Https'den önceki kilit hala üstü kapalı, ancak sorun değil çünkü artık can sıkıcı bir pop-up yok.
nalply

Bu benim için Mac Catalina'da işe yaradı. Teşekkürler! :)
Saurabh

58

23 Nisan 2017 GÜNCELLEME

Chromium Ekibi tarafından önerilir

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Hızlı Süper Kolay Çözüm

Güvenlik hatasına rağmen Chrome'un devam etmesi için hata sayfasına yazılabilen gizli bir bypass ifadesi vardır: thisisunsafe (Chrome'un önceki sürümlerinde badidea yazın ve hatta daha önce tehlike ). DO NOT Bu neden gerekli KULLANIMI BU SİZE TAM ANLAR SÜRECE!

Kaynak:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

( window.atob('dGhpc2lzdW5zYWZl')Çözümleyen NOT thisisunsafe)

Kaynağın en son sürümü @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js ve window.atobişlev bir JS konsolu.

Chrome ekibinin neden atlama ifadesini (ilk kez) değiştirdiği hakkında arka plan için:

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

Her şey başarısız olursa (Çözüm # 1)

"Yine de Devam Et" seçeneği yoksa veya baypas ifadesi çalışmıyorsa, hızlı bir kerelikler için bu saldırı iyi çalışır:

  1. localhostBu bayrağı etkinleştirerek sertifika hatalarına izin verin (Chrome'un bayrak değerini değiştirdikten sonra yeniden başlatılması gerektiğini unutmayın):

    chrome://flags/#allow-insecure-localhost

    (ve oylama cevabı https://stackoverflow.com/a/31900210/430128 @Chris tarafından)

  2. Bağlanmak istediğiniz site ise localhost, işleminiz tamamlanmıştır. Aksi takdirde, 8090 numaralı bağlantı noktasını yerel olarak dinlemek ve broken-remote-site.com443 numaralı bağlantı noktasına bağlanmak için bir TCP tüneli ayarlayın socat, bir terminal penceresine böyle bir şey yüklediğinizden ve çalıştırdığınızdan emin olun :

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. Tarayıcınızda https: // localhost: 8090 adresine gidin .

Her şey başarısız olursa (Çözüm # 2)

"Her şey başarısız olursa (Çözüm # 1)" 'e benzer şekilde, burada ngrok kullanarak yerel hizmetimize bir proxy yapılandırıyoruz . Ngrok http tünellerine TLS üzerinden erişebildiğinizden (bu durumda ngrok tarafından geçerli bir sertifika ile sonlandırılır) veya TLS olmayan bir uç nokta üzerinden tarayıcı geçersiz sertifikalardan şikayet etmez.

Ngrok'u indirip yükleyin ve ardından şu şekilde açın ngrok.io:

ngrok http https://localhost

ngrok başlar ve bağlanabileceğiniz bir ana bilgisayar adı sağlar ve tüm istekler yerel makinenize geri tünellenir.


10
Quora.com/… 'da belirtildiği gibi , başka bir seçenek sayfanın herhangi bir yerine tıklamak ve "badidea"
yazmaktır

Servis çalışanları için https ile localhost kullanmaya çalışan herkes, if-all-
fails'in

bu yine de sertifikayı geçersiz kabul eder ve şifreyi çalışmayı reddetmeyi yönetir
Ray Foss

34

Test ortamı için

--ignore-certificate-errorsKromu başlatırken komut satırı parametresi olarak kullanabilirsiniz (Ubuntu'da Sürüm 28.0.1500.52 üzerinde çalışma).

Bu, hataları görmezden gelmesine ve uyarı yapmadan bağlanmasına neden olur. Zaten çalışan bir krom sürümünüz varsa, komut satırından yeniden başlatmadan önce bunu kapatmanız gerekir, aksi takdirde yeni bir pencere açılır, ancak parametreleri yoksayar.

Test sunucularının hiçbir zaman geçerli sertifikaları olmadığından Intellij'i hata ayıklama sırasında kromu bu şekilde başlatacak şekilde yapılandırıyorum.

Sertifika kontrolleri önemli bir güvenlik özelliği olduğundan, normal tarama işlemlerini tavsiye etmem, ancak bu bazılarına yardımcı olabilir.


5
Windows 8'de benim için çalıştı! Chrome kısayolunu> Özellikler> Bu şekilde 'Hedef' alanını değiştirdim (alıntıdan sonra ve boşlukla birlikte '--ignore-sertifika-hataları' eklenmelidir): "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-sertifika-hataları
mikhail-t

1
Bu soruya cevap vermiyor ve tehlikeli. Soru, Chrome'un kendinden imzalı bir sunucu sertifikasına güvenmesini sağlamaktı; uyarıları ve hataları nasıl göz ardı edeceğini değil.
jww

1
Windows 7 (64 bit) ile Chrome'da (63.0.3239.108) benim için çalışan tek çözüm budur. Güvenlikle ilgili olarak, masaüstünde yalnızca yerel bir sanal makinede geliştirirken başlattığım özel bir simge oluşturdum. Kendinden imzalı yerel sertifikaları içe aktarmak, chrome: // flags & HSTS alan adını ayarlamak yardımcı olmadı. Chrome kesinlikle bu eski iyi düğme "Güvenlik istisnası ekle" tutmalıdır - bana işe yaramaz ayarlarla mücadele 2 saat kurtaracak.
lubosdz

Bu eğitim bir cazibe gibi çalıştı! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins

20

Birisinin belirttiği gibi, yalnızca tarayıcı pencerelerini değil, TÜM Chrome'u yeniden başlatmanız gerekir. Bunu yapmanın en hızlı yolu bir sekme açmaktır ...

chrome://restart


Hey! Sadece benim için sabit olanın bu olduğunu belirtmek istedim. Güven deposuna özel bir CA ekliyordum, her zaman benim için bu şekilde çalıştı. Firefox'u denedim ve kusursuz çalıştım ama krom değil. Sonunda, bahsettiğiniz gibi kromu tamamen yeniden başlatmanız gerektiği anlaşılıyor. Chrome, bu arka plan işlemleri devam ettiği sürece aynı güven deposunu kullanmaya devam ediyor olabilir.
Jose Cifuentes

19

WINDOWS HAZİRAN / 2017 Windows Server 2012

@Brad Parks cevabını takip ettim. Windows'ta, rootCA.pem dosyasını Güvenilen Kök Sertifika Yetkilileri deposuna almanız gerekir.

Aşağıdaki adımları uyguladım:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

V3.ext nerede:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

Sonra, benim durumumda bir kendi barındırılan web uygulaması var, bu yüzden IP adresi ve bağlantı noktası ile sertifika bağlamak gerekir, sertifika özel anahtar bilgileri ile benim mağazada olmalıdır, bu yüzden pfx formatına ihraç.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

Mmc konsolu ile (Ek Bileşenleri Ekle / Kaldır / Sertifikalar / Ekleme / Hesaplama Hesabı / YerelBilgisayar / Tamam) Kişisel mağazaya pfx dosyasını aktardım.

Daha sonra sertifikayı bağlamak için bu komutu kullandım (HttpConfig aracını da kullanabilirsiniz):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = Sertifika Düzeni

appid = GUID (seçiminiz)

İlk önce Güvenilen Kök Sertifika Yetkililerinde "device.crt" sertifikasını farklı yollarla almaya çalıştım ama yine de aynı hatayı alıyorum:

resim açıklamasını buraya girin

Ancak etki alanı için sertifika değil, kök yetki sertifikası almam gerektiğini fark ettim. Bu yüzden mmc konsolu kullandım (Ek Bileşenleri / Sertifikaları Ekle / Kaldır / Sertifikalar Ekle / Hesapla / YerelBilgisayar / Tamam) Güvenilen Kök Sertifika Yetkilileri deposuna rootCA.pem dosyasını içe aktardım.

resim açıklamasını buraya girin

Chrome'u yeniden başlatın ve işe yaradı.

Localhost ile:

resim açıklamasını buraya girin

Veya IP adresiyle:

resim açıklamasını buraya girin

Ulaşamadığım tek şey, eski şifre (resimde kırmızı kare) olmasıdır. Yardım bu noktada takdir edilmektedir.

Makecert ile SAN bilgisi eklemek mümkün değildir. New-SelfSignedCertificate (Powershell) ile SAN bilgileri ekleyebilir, ayrıca çalışır.


2
Önemli: OpenSSL'yi yönetici olarak çalıştırın.
Jose A

Bu en iyi cevaptır ve Ocak 2019'dan itibaren Chrome [71.0.3578.98] için çalışıyor
ShadeBlack

Vay canına, çok teşekkürler (Chrome 75 - Temmuz 2019'da). netsh httpWindows sunucusunu kullanmadığınız sürece adıma ihtiyacınız yoktur . Ayrıca cert dosyasını pfx'e aktarmanın gerekli olduğunu düşünmüyorum.

onaylanmış çalışma: Chrome 81 - Mayıs 2020 - Windows 7
petrosmm

15
  1. CA sertifikasını güvenilen kök CA Mağazası'na ekleyin.

  2. Chrome'a ​​gidin ve bu bayrağı etkinleştirin!

chrome://flags/#allow-insecure-localhost

Sonunda, * .me etki alanını veya * .com ve * .net gibi geçerli herhangi bir etki alanını kullanın ve bunları ana bilgisayar dosyasında saklayın. Yerel geliştiricilerim için, aşağıdaki gibi bir ana bilgisayar dosyasıyla * .me veya * .com kullanıyorum:

  1. Ana bilgisayara ekle. C: / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

Not: Bunu yaparken tarayıcı zaten açılmışsa, hata gösterilmeye devam eder. Bu nedenle, lütfen tarayıcıyı kapatın ve tekrar başlayın. Daha da iyisi, gizli moda geçin veya anında etki için yeni bir oturum başlatın.



Ben sadece yerel geliştirme izin verilen alan adlarını ekledim yani * .me siteleri Windows ana bilgisayar dosyasına. Kişiler sertifikayı ekler, ancak bazen sertifika düzgün yüklense bile ana makine SSL doğrulamasını doğrulayamaz. Bu durumda yeni bir oturum oluştururuz. Sadece bu ipuçlarını ekledim. Bu tavşan deliğinden çok derine gittim, bu yüzden birinin ihtiyaç duyulursa ne yapacağını bildiğinden emin olmak istedim.
Ariel

14

Sitenin sunulduğu adresin sertifika ile aynı olduğundan emin misiniz? Chrome ve kendinden imzalı bir sertifika ile aynı sorunları yaşadım, ancak sonunda, alan adının sertifikada doğrulanması konusunda inanılmaz derecede seçici olduğunu gördüm (olması gerektiği gibi).

Chrome'un kendi sertifikası yok ve Window'un kendi deposunu kullanıyor. Ancak Chrome, mağazaya sertifikaları içe aktarmanın bir yolunu sağlamaz, bu nedenle IE yerine eklemeniz gerekir.

Google Chrome'a ​​Sertifika Yükleme

Internet Explorer'a Sertifika Yükleme

Ayrıca, kendinden imzalı sertifikalar oluşturmak için birkaç farklı yaklaşım için buna bir göz atın (IIS'yi belirtmediğiniz gibi kullandığınızı varsayıyorum).

IIS 7'de Kendinden İmzalı Sertifika Oluşturma


Söz konusu site localhost ve sertifikanın CN'si "localhost" dur. Evet, sertifikayı Windows sertifika deposuna yükledim. Hem IE hem de Chrome sertifikadan şikayet ediyor.
pjohansson

IIS mi yoksa Apache mi kullandığınızdan emin değilsiniz, ancak IIS için kendinden imzalı sertifikalar oluşturmaya eklediğim ekstra bağlantıyı kontrol edin.
Ira Rainey

Çünkü sertifika alan adının doğrulanması hakkında inanılmaz seçici kısmı: Birisi daha o haberi geliyor? Android 9'da Google Chrome tarafından güvenli olmadığı iddia edilen bir kök sertifikayla ilgili bir sorunum var (2019'dur). FF ve masaüstünde sorun yok.
BairDev

7

Google Chrome, Mac OS X ve Kendinden İmzalı SSL Sertifikaları olan bjnord'un önerisini kullanma sürecine geçtim.

Blogda gösterilenler işe yaramadı.

Ancak, blogun yorumlarından biri altındı:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

Yukarıdaki komutu kullanabilmeniz için cert dosyasını nasıl edinebileceğinizle ilgili blog'u takip etmeniz ve devam etmeniz iyi olacaktır.


7

Linux'ta Chromium'da SSL sertifikalarını yönetmek için GUI benim için düzgün çalışmadı. Ancak belgeleri doğru cevabı verdi. İşin püf noktası, kendinden imzalı SSL sertifikasını içe aktaran aşağıdaki komutu çalıştırmaktı. Bunun adını güncelleyin <certificate-nickname>ve certificate-filename.cerardından krom / krom'u yeniden başlatın.

Dokümanlar'dan:

Linux'ta Chromium, NSS Paylaşılan DB'sini kullanır. Yerleşik yönetici sizin için çalışmazsa, sertifikaları NSS komut satırı araçlarıyla yapılandırabilirsiniz.

Araçları edinin

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Fedora: su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(Aşağıdaki tüm komutları nssönekle başlatmanız gerekir , örn nsscertutil.)sudo zypper install mozilla-nss-tools

Kendinden imzalı bir sunucu sertifikasına güvenmek için şunu kullanmalıyız:

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

Tüm sertifikaları listele

certutil -d sql:$HOME/.pki/nssdb -L

TRUSTARGS, virgülle ayrılmış, sıfır veya daha fazla alfabetik karakterden oluşan üç dizedir. Sertifikanın SSL, e-posta ve nesne imzalama için nasıl güvenilmesi gerektiğini tanımlar ve certutil dokümanlarında veya Meena'nın güven bayraklarıyla ilgili blog gönderisinde açıklanır.

SSL istemcisi kimlik doğrulaması için kişisel bir sertifika ve özel anahtar ekleme Şu komutu kullanın:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

PKCS # 12 dosyasında saklanan kişisel bir sertifikayı ve özel anahtarı almak için. Kişisel sertifikanın TRUSTARGS değeri “u, u, u” olarak ayarlanacaktır.

Sertifika silme certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Alıntı: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md


7

Filippo Valsorda mkcert, bunu birçok güven mağazasında yapmak için bir platformlar arası araç yazdı . Ben bu nedenle bu soruya o kadar çok cevap var yazdı sanırım: güvenilir kök CA tarafından imzalanan SubjectAltName sertifikaları için "doğru" bir şey yapmak bir acıdır.

mkcert Windows, macOS ve çeşitli Linux lezzetleri için ana paket yönetim sistemlerine dahil edilmiştir.

mkcert

mkcertyerel olarak güvenilir geliştirme sertifikaları oluşturmak için basit bir araçtır. Hiçbir yapılandırma gerektirmez.

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

6

URL'nin yanındaki küçük çarpı işaretli kilit simgesini tıkladığınızda, şöyle görünen bir kutu alırsınız:

resim açıklamasını buraya girin

Sertifika bilgileri bağlantısını tıkladıktan sonra aşağıdaki iletişim kutusunu görürsünüz:

resim açıklamasını buraya girin

Hangi sertifika deposunun doğru olduğunu, Güvenilir Kök Sertifika Yetkilileri deposunu belirtir .

Sertifikayı bu depoya eklemek için diğer yanıtlarda özetlenen yöntemlerden birini kullanabilir veya kullanabilirsiniz:

certutil -addstore -user "ROOT" cert.pem
  • ROOT daha önce bahsedilen sertifika deposunun dahili adıdır.
  • cert.pem kendinden imzalı sertifikanızın adıdır.

1
certutil -addstore -user "ROOT" cert.pemWindows nedir?
Pacerier

1
@Pacerier: Doğru, Windows için.
Der Hochstapler

İçindekileriniz var Trusted Root Certification Authoritiesama sorun devam ediyor: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, krom 78
çalışıyor

6

Bu benim için çalıştı. Bkz. Http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

Adres çubuğunda, X ile küçük kilidi tıklayın. Bu, küçük bir bilgi ekranı görüntüler. "Sertifika Bilgileri" yazan düğmeyi tıklayın.

Görüntüyü tıklayın ve masaüstünüze sürükleyin. Küçük bir sertifika gibi görünüyor.

Çift tıklayın. Bu, Keychain Access yardımcı programını getirecektir. Kilidini açmak için şifrenizi girin.

Sertifikayı, oturum açma anahtarlığına değil, Sistem anahtarlığına eklediğinizden emin olun. Hiçbir şey yapmıyor gibi görünse de "Her Zaman Güven" i tıklayın.

Eklendikten sonra çift tıklayın. Yeniden kimlik doğrulaması yapmanız gerekebilir.

"Güven" bölümünü genişletin.

"Bu sertifikayı kullanırken", "Her Zaman Güven" olarak ayarlayın


6

Her şeyi denedim ve ne işe yaradı: İçe aktarırken, doğru kategoriyi seçin, yani Güvenilir Kök Sertifika Yetkilileri :

(üzgünüm Alman, ama sadece resmi takip et)

resim açıklamasını buraya girin


6
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)

1
Bu benim için krom 77 ile çalışan tek kişi. Günümü kurtardığın için teşekkürler.
Romain

Oluşturulan dosyalar nasıl kullanılır? Etki alanı .crt ve .key dosyalarını nasıl kullanacağımı anlıyorum .csr dosyası ne için? Ve rootCA. * Dosyalarını nasıl kullanabilirim? Lütfen cevabınızı genişletin ...
Chiwda

Çok teşekkür ederim, günümü kurtardın!
dodancs

6

Bu gönderi zaten yanıtlarla dolu, ancak Chrome'da geçerli olan kendinden imzalı bir TLS sertifikası oluşturmayı kolaylaştırmak için diğer yanıtlardan bazılarına dayanan bir bash betiği oluşturdum (Test edildi ). Umarım başkaları için yararlıdır.Chrome 65.x

kendinden imzalı-tls bash betiği

Sertifikayı yükledikten ( ve güvendikten ) sonra Chrome'u ( chrome://restart) yeniden başlatmayı unutmayın


Kontrol edilmeye değer başka bir araç CloudFlare cfsslaraç setidir:

cfssl


6

Windows'ta Chrome v58 ve sonraki sürümlerin güveneceği kendinden imzalı bir sertifika oluşturmak için Powershell'i yükseltilmiş ayrıcalıklarla başlatın ve şunu yazın:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

Bunu yaptıktan sonra, sertifika Kişisel \ Sertifikalar altındaki Yerel Bilgisayar sertifikalarına kaydedilir. deposu .

Bu sertifikayı Güvenilen Kök Sertifika Yetkilileri \ Sertifikalarına kopyalamak istiyorsunuz deposuna .

Bunu yapmanın bir yolu: Windows başlat düğmesini tıklayın ve yazın certlm.msc. Ardından, yeni oluşturulan sertifikayı aşağıdaki ekran görüntüsü başına Güvenilen Kök Sertifika Yetkilileri \ Sertifikalar deposuna sürükleyip bırakın . resim açıklamasını buraya girin


mac bunu nasıl lütfen? teşekkürler :)
Artanis Zeratul

@mpowrie. Bunu oluşturduktan sonra, Apache web sunucusuna nasıl bağlarım? Localhost sunucusunda.
Ifedi Okonkwo

Ifedi Okonkwo: Apache web sunucusundan özür dilerim, ancak IIS ile https türünde bir site bağlaması eklersiniz, tam nitelikli ana bilgisayar adını ekleyin ve SSL sertifikasını seçin.
mpowrie

Bu bir cazibe gibi çalışır. Bu sertifikayı bağlayıcı olarak atamak istiyorsanız ve sertifikanın Kişisel> Sertifikalar'da olması gerektiğini ek bir adım daha atmanız gerektiğini söyleyeceğim. Sürükleme ve bırakma, bir nedenden ötürü, onu aslında Kişisel sertifikalardan kaldırdı ve Güvenilir Sertifikalara yerleştirdi. Bu yüzden kopyalayıp yapıştırdığınızdan emin olun.
StephenPAdams

5

Mac / osx'ta SSL / HTTPS yerel ana bilgisayar düzeltmesi:

  1. Https localhost ortamınızı açmaya çalışırken adres çubuğunuzdaki çarpı işaretli kırmızı kilidi tıklayın. Sertifika hakkında bazı bilgiler içeren bir pencere açılacaktır.

  2. "Ayrıntılar" bilgi penceresine tıklayın

  3. Chrome Geliştirici araçları 'Güvenlik' sekmesinde açılır. Sertifikayı Görüntüle'ye tıklayın . Sertifika resmi
  4. Bunu 'Sistem' anahtarlığınıza ekleyin (varsayılan olarak seçilen 'giriş' anahtarlığınıza değil).

  5. Anahtar zincirinizi açın (tekrar) ve sertifikayı bulun. Üzerine tıklayın ve hepsine "güvendiğinizden" emin olun.

  6. Chrome'u yeniden başlatın ve çalışması gerekir.


Aptal grafik arayüzü MacoOS 10.14.5'teki sertifikayı kabul etmeyebilir, ancak ile içe aktarabilirsiniz security import filename.pem -k ~/Library/Keychains/login.keychain. Grafik hata veriyor -25294
boatcoder

5

Aynı sorunu yaşıyordum: Sertifikayı Windows'un Güvenilen Kök Yetkilileri deposuna yükledim ve Chrome yine de hatayla sertifikayı reddetti ERR_CERT_COMMON_NAME_INVALID. Sertifika depoya düzgün yüklenmediğinde hatanın olduğunu unutmayın ERR_CERT_AUTHORITY_INVALID.

Hatanın, bu yorumun ve bu sorunun adının ima ettiği gibi , sorun sertifikada belirtilen etki alanı adında yatıyordu. Sertifika oluşturulurken "Ortak Ad" istendiğinde , siteye ( localhostbenim durumumda) erişmek için kullandığım alan adını girmek zorunda kaldım . Chrome'u kullanarak yeniden başlattım chrome://restartve sonunda bu yeni sertifikadan memnun kaldım .


Ayrıca localhost kullanıyorum ama krom bu konuda mutlu değil imgur.com/a/mjlglVz Windows 10, Chrome 78. Buradan talimatları takip ettim: stackoverflow.com/a/44398368/4983983 Localhost ile
erişiyorum

ortak adı "localhost" kullanarak neredeyse işe yaradı ve nihayet ben de seçenek ile krom başlattığınızda işe --allow-insecure-localhost
yaradı

5

Krom 58+ I itibariyle üzerinde sertifika hatası başlarken MacOS SAN eksik nedeniyle. Adres çubuğundaki yeşil kilidi tekrar nasıl alacağınız aşağıda açıklanmıştır.

  1. Aşağıdaki komutla yeni bir sertifika oluşturun:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
  2. server.crtAnahtar Zincirinize aktarın , ardından sertifikayı çift tıklayın, Güven'i genişletin ve Her Zaman Güven'i seçin

Google Chrome'da https://domain.dev sayfasını yenileyin , böylece yeşil kilit geri gelecektir.


Bu alt alanlar için çalışır, api.domain.devancak hala bir uyarı sayfası var domain.dev: This server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.Herhangi bir fikir?
François Romain

5

MacOS'taki Chrome için bir sertifika hazırladıysanız:

  • Chrome'dan ( cmd+ Q) çıkın .
  • Anahtarlık Erişimi uygulamasını başlatın ve "Sertifikalar" kategorisini açın.
  • Sertifika dosyanızı Anahtar Zinciri Erişimi penceresine sürükleyin ve sertifika dosyasının şifresini yazın.
  • Sertifikanızı çift tıklayın ve "Güven" listesini açın.
    • "Bu sertifikayı kullanırken" satırında "Her Zaman Güven" i seçin.
    • Bu öğeleri kapatın ve şifrenizi yazın.
  • Chrome'u başlatın ve tüm önbellekleri temizleyin.
  • Her şeyin yolunda olup olmadığını kontrol edin.

5

Güvensiz localhost'un bu yöntemle iyi çalışmasına izin verme chrome: // flags / # allow-insecure-localhost

Sadece xxx.localhost için geliştirme ana bilgisayar adınızı oluşturmanız gerekir.

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.