Uzyskiwanie przez Chrome akceptacji samopodpisanego certyfikatu localhost

1206

Utworzyłem samopodpisany certyfikat SSL dla localhost CN. Firefox akceptuje ten certyfikat po początkowej reklamacji, zgodnie z oczekiwaniami. Chrome i IE odmawiają jednak zaakceptowania go, nawet po dodaniu certyfikatu do systemowego magazynu certyfikatów w obszarze Zaufane rooty. Mimo że certyfikat jest wymieniony jako poprawnie zainstalowany po kliknięciu „Wyświetl informacje o certyfikacie” w wyskakującym okienku HTTPS Chrome, nadal nalega, aby certyfikatowi nie można było zaufać.

Co mam zrobić, aby Chrome zaakceptował certyfikat i przestał na niego narzekać?

pjohansson
źródło
13
Kiedy mówisz, że Firefox początkowo na to narzeka, masz na myśli, że prosi Cię o dodanie wyjątku certyfikatu? Nie powinno tak się zdarzyć, jeśli certyfikat jest poprawnie zainstalowany. Wydaje mi się, że wszystkie trzy przeglądarki narzekają, ale Firefox pozwala anulować jego skargę. Publikuję to jako komentarz, ponieważ nie mam konkretnej odpowiedzi, ale zrobiłem dokładnie to i działa dobrze we wszystkich trzech przeglądarkach. Sugerowałbym, abyś najpierw spróbował uruchomić go na IE, a potem, kiedy to się cieszy, martw się o pozostałe dwa. Przepraszam, że nie mogłem więcej pomóc!
starskythehutch
1
Musisz utworzyć dobrze sformułowany certyfikat, w tym sposób prezentacji nazw DNS. OpenSSL nie przedstawia ich w sposób satysfakcjonujący przeglądarki po wyjęciu z pudełka. Zobacz Jak utworzyć samopodpisany certyfikat za pomocą openssl? .
jww
4
Firefox nie używa systemowego magazynu certyfikatów.
ciekawy,
4
Jeśli podpis certyfikatu używa SHA-1, najnowsze wersje Chrome (około 57) będą wyświetlać ostrzeżenia, nawet jeśli udało się dodać niestandardowy certyfikat . Niezależnie od tego panel „Bezpieczeństwo” narzędzi programistycznych powie dokładniej, na czym polega problem, np net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM. :
SeldomNeedy
2
Właśnie przestałem używać Chrome do celów programistycznych, ponieważ nie jest przyjazny dla programistów. Zazwyczaj osoba, która kończy się w takiej sytuacji, i tak wie, co robi. Dzięki, ale nie dzięki. Mam dość frustracji z Chrome!
GTodorov

Odpowiedzi:

65

2020-05-22 : Za pomocą tylko 6 poleceń powłoki możesz to zrobić.

Proszę nie zmieniać ustawienia przeglądarki bezpieczeństwa.

Za pomocą następującego kodu możesz (1) zostać własnym urzędem certyfikacji, (2), a następnie podpisać certyfikat SSL jako urząd certyfikacji. (3) Następnie zaimportuj certyfikat CA (nie certyfikat SSL, który trafia na twój serwer) do Chrome / Chromium. (Tak, działa to nawet w systemie Linux).

######################
# 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

Przypomnę:

  1. Zostań urzędem certyfikacji
  2. Podpisz swój certyfikat za pomocą klucza CA.
  3. Importuj myCA.pemjako organ w ustawieniach Chrome (Ustawienia> Zarządzaj certyfikatami> Urzędy> Importuj)
  4. Użyj .crtpliku na swoim serwerze

Dodatkowe kroki (przynajmniej dla komputerów Mac):

  1. Zaimportuj certyfikat CA w „Plik> Importuj plik”, a następnie znajdź go również na liście, kliknij go prawym przyciskiem myszy, rozwiń „> Zaufaj” i wybierz „Zawsze”
  2. Dodaj extendedKeyUsage=serverAuth,clientAuthponiżej basicConstraints=CA:FALSEi upewnij się, że ustawiłeś „CommonName” na to samo, co w $NAMEprzypadku prośby o konfigurację

Możesz sprawdzić swoją pracę

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt
JellicleCat
źródło
2
Przeglądarki i systemy operacyjne @maverick są dostarczane z ograniczoną liczbą zaufanych urzędów certyfikacji. Chociaż każdy może zostać urzędem certyfikacji, aby każdy mógł zaufać swoim certyfikatom, musiałby ręcznie dodać go jako zaufany urząd certyfikacji (tak jak Chrome nakazuje, aby zrobić to ręcznie, gdy importujemy certyfikat).
JellicleCat
2
Świetny! Dwie uwagi dla użytkowników komputerów Mac, jak ja: w ostatnim wierszu, użyj -days 825zamiast -days 1825powodu superuser.com/questions/1492643/... , a warto zauważyć, że importowanie cert roota w Key Chain Access, potrzebny nie tylko do „Plik > Importuj plik ”, ale także, aby znaleźć go na liście, kliknij go prawym przyciskiem myszy, rozwiń„> Ufaj ”i wybierz„ Zawsze ”.
michielbdejong
2
jeśli potrzebujesz pliku PEM zamiast pliku CRT dla lokalnego serwera deweloperskiego , nie martw się, po prostu połącz pliki .crt i .csr i zapisz je jako plik .pem , i gotowe.
Kerem Baydoğan
1
OSTATNIE TO DZIAŁA! BRAVO dla tej odpowiedzi. Nie zapomnij załadować myCA.pem do Chrome lub Firefox (Ustawienia> Zarządzaj certyfikatami> Urzędy> Importuj)
Fryser wow
3
Zmieniłem DNS.1 na IP.1 dla mojego serwera LAN opartego na IP. To działa. Dzięki.
dw1
764

Dla localhostwyłącznie:

Po prostu wklej to w swoim chrome:

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

Powinieneś zobaczyć podświetlony tekst z napisem: Zezwól na niepoprawne certyfikaty dla zasobów ładowanych z localhost

Kliknij Enable.

Chris
źródło
3
Wyłącza ostrzeżenie ... ale także pamięć podręczną! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood
4
to nie zadziała, jeśli używasz chrome w trybie incognito (do przełączania tożsamości np.), ale bardzo czyste inaczej
baywet
5
To - jeśli możesz znieść irytującą czerwoną wiadomość Not Secure. W przeciwnym razie nadejdą godziny tajemniczych inkantacji opensl, a następnie próby poradzenia sobie z wewnętrznym menedżerem certyfikatów w Chrome.
timbo
10
Nie wiem, dlaczego głosowano na tę odpowiedź, ale istnieje różnica między niepoprawnym certyfikatem a certyfikatem z podpisem własnym. Pytanie dotyczy certyfikatu z podpisem własnym.
Mehdi
2
W ogóle dla mnie nie działało. To, co zadziałało, to wygenerowanie samopodpisanego certyfikatu zawierającego podmiotAltName, jak wyjaśniono w tej odpowiedzi: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew
507

To działało dla mnie:

  1. Korzystając z Chrome, przejdź do strony na serwerze za pośrednictwem HTTPS i przejdź obok czerwonej strony z ostrzeżeniem (zakładając, że jeszcze tego nie zrobiłeś).
  2. Otwórz się Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Kliknij Authoritieskartę i przewiń w dół, aby znaleźć certyfikat pod nazwą organizacji nadaną certyfikatowi.
  4. Wybierz, kliknij Edytuj ( UWAGA : w najnowszych wersjach Chrome przycisk jest teraz „Zaawansowany” zamiast „Edytuj”), zaznacz wszystkie pola i kliknij OK. Może być konieczne ponowne uruchomienie Chrome.

Powinieneś dostać teraz ładną zieloną blokadę na swoich stronach.

EDYCJA: Próbowałem ponownie na nowym komputerze i certyfikat nie pojawił się w oknie Zarządzaj certyfikatami, przechodząc dalej od czerwonej strony niezaufanego certyfikatu. Musiałem wykonać następujące czynności:

  1. Na stronie z niezaufanym certyfikatem ( https://przekreślony na czerwono) kliknij blokadę> Informacje o certyfikacie. UWAGA: w nowszych wersjach Chrome musisz otworzyć Developer Tools > Securityi wybrać View certificate.
  2. Kliknij Details tab > Export. Wybierz PKCS #7, single certificatejako format pliku.
  3. Następnie postępuj zgodnie z moimi oryginalnymi instrukcjami, aby przejść do strony Zarządzaj certyfikatami. Kliknij Authorities tab > Importi wybierz plik, do którego eksportowałeś certyfikat, i upewnij się, że wybierasz PKCS #7, single certificate typ pliku .
  4. Jeśli pojawi się monit o magazyn certyfikatów, wybierz Zaufane główne urzędy certyfikacji
  5. Zaznacz wszystkie pola i kliknij OK. Uruchom ponownie Chrome.
Kelen
źródło
143
Próbowałem tego na komputerze z systemem Linux, ale powiedziano, że import nie powiódł się, ponieważ xxx.xxx.com: nie jest urzędem certyfikacji.
mat
15
Dzięki @kellen .. Jednak w przeglądarce Chrome w wersji 29.0.1547.57 beta nie ma opcji „Eksportuj” w dowolnym miejscu informacji o certyfikacie. To powiedziawszy, istnieje sekcja „Szczegóły”, ale nie ma ona formy Tab. Wygląda jak składany / rozwijany blok. i.imgur.com/dDmNEIh.png
kawalkada
20
W Chrome 37 nie ma już użytecznego, opisowego Exportprzycisku. Wygląda na to, że został zastąpiony cudownym Copy to fileprzyciskiem. Dlaczego „eksport” nie był utrzymywany, umysł tylko bagatelizuje
kolin
13
@Jobobud, po prostu przeciągnij symbol certyfikatu na pulpit lub coś takiego i zostanie wyeksportowany. Jednak reszta odpowiedzi nie działa w systemie OS X (Yosemite), o ile mogę powiedzieć (Chrome 39).
db
33
Począwszy od Chrome 56, aby uzyskać dostęp do ustawień certyfikatu SSL w systemie Windows, musisz użyć Narzędzi programisty (CTRL + SHIFT + i), przejdź do zakładki „Bezpieczeństwo” i kliknij przycisk „Wyświetl certyfikat”.
void.pointer
167

AKTUALIZACJA DLA CHROME 58+ (WYDANO 2017-04-19)

Począwszy od Chrome 58, możliwość identyfikacji tylko hosta commonName została usunięta . Certyfikaty muszą teraz służyć subjectAltNamedo identyfikowania ich hostów. Zobacz dalszą dyskusję tutaj i tracker błędów tutaj . W przeszłości subjectAltNamebył używany tylko do certyfikatów z wieloma hostami, więc niektóre wewnętrzne narzędzia CA nie zawierają ich.

Jeśli Twoje samopodpisane certyfikaty działały dobrze w przeszłości, ale nagle zaczęły generować błędy w Chrome 58, właśnie dlatego.

Niezależnie od tego, jakiej metody używasz do generowania certyfikatu z podpisem własnym (lub certyfikatu podpisanego przez samopodpisany urząd certyfikacji), upewnij się, że certyfikat serwera zawiera subjectAltNamewłaściwy DNSi / lub IPwpis / wpisy, nawet jeśli dotyczy tylko jednego hosta .

W przypadku openssl oznacza to, że konfiguracja OpenSSL ( /etc/ssl/openssl.cnfna Ubuntu) powinna mieć coś podobnego do następującego dla jednego hosta:

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

lub dla wielu hostów:

[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

W przeglądarce certyfikatów Chrome (która została przeniesiona do karty „Bezpieczeństwo” pod F12) powinieneś zobaczyć ją Extensionsjako Certificate Subject Alternative Name:

Przeglądarka certyfikatów Chrome

Tobias J
źródło
12
Dziękujemy za opublikowanie informacji o aktualizacji Chrome 58+! Dla osób, które chcą stworzyć samopodpisany certyfikat zawierający SAN w systemie Windows, jednym z łatwych sposobów jest użycie komendy PowerShell New-SelfSignedCertificate. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO
3
@DanO DZIĘKUJĘ! Żadne inne obejście nie działało dla mnie w Win10. Miło wiedzieć, że przynajmniej Powershell generuje ważne certyfikaty!
Brian Donahue
1
Znalazłem rozwiązanie na Reddit dla Chrome 58+ i działa! W wierszu polecenia administratora: reg dodaj HKLM \ Software \ Policies \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson
3
Aby utworzyć /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.json{ "EnableCommonNameFallbackForLocalAnchors": true }
zasadę
5
„W przeglądarce certyfikatów Chrome (która została przeniesiona do zakładki„ Bezpieczeństwo ”pod F12) powinieneś zobaczyć ją Extensionsjako Certificate Subject Alternative Name„. Nie widzę żadnej sekcji „Rozszerzenia”, kiedy otwieram kartę Zabezpieczenia w narzędziach programistycznych F12 (Chrome 62). Czy został przeniesiony w inne miejsce?
Thunderforge
142

Na komputerze Mac możesz użyć narzędzia Dostęp do pęku kluczy, aby dodać samopodpisany certyfikat do pęku kluczy systemu, a Chrome go zaakceptuje. Tutaj znalazłem instrukcje krok po kroku:

Google Chrome, Mac OS X i certyfikaty SSL z podpisem własnym

Gruntownie:

  1. kliknij dwukrotnie ikonę kłódki za pomocą X i przeciągnij i upuść ikonę certyfikatu na pulpit,
  2. otwórz ten plik (z rozszerzeniem .cer); to otwiera aplikację pęku kluczy, która pozwala zatwierdzić certyfikat.
bjnord
źródło
12
Co ważne, konieczne może być ponowne uruchomienie Chrome.
Xiong Chiamiov
10
Musiałem ręcznie edytować preferencje certyfikatów i ręcznie ufać SSL
NeDark,
1
Działa to dla mnie na Yosemite, 10.10.5, wersja Chrome 46.0.2490.80 (64-bit). Dzięki!
romellem,
2
Pracował na El Capitan, nie wymaga restartu. Dodałem certyfikat, kliknąłem go, rozwinąłem listę rozwijaną Zaufanie i ustawiłem ją Always Trustna sekcję SSL. Zasadniczo to, co powiedział @NeDark.
Tom
1
Musiałem przeciągnąć i upuścić certyfikat z pulpitu do pęku kluczy, a następnie zatwierdzić.
jmq
129

Kliknij dowolne miejsce na stronie i wpisz BYPASS_SEQUENCE

thisisunsafe” to BYPASS_SEQUENCE dla przeglądarki Chrome w wersji 65

badidea” Wersja Chrome 62–64.

danger” działał we wcześniejszych wersjach Chrome

Nie musisz szukać pola wprowadzania, wystarczy je wpisać. To dziwne, ale działa.

Próbowałem na Mac High Sierra.

Aby dokładnie sprawdzić, czy zmienili go ponownie, przejdź do najnowszego kodu źródłowego chromu

Aby wyszukać BYPASS_SEQUENCE, w tej chwili wygląda to tak:

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

Teraz mają go zakamuflowane, ale aby zobaczyć prawdziwy BYPASS_SEQUENCE, możesz uruchomić następujący wiersz w konsoli przeglądarki.

console.log(window.atob('dGhpc2lzdW5zYWZl'));
Jewgienij Afanasiew
źródło
6
wtf, dzięki to działało dla mnie ubuntu 16.04 63.0.3239.84
gries
8
Ten kod został zmieniony od nowej wersji. Nowa formuła jestthisisunsafe
Java Guy
6
W Chrome 65 w systemie Windows 10 pisanie thisisunsafewydaje się mieć wpływ tylko na dodanie tej witryny do wyjątków. (Na pasku adresu nadal
Ryan
2
to działa, ale tylko przy pierwszym ładowaniu, jeśli poruszasz się po stronie, musisz ponownie wpisać bupass_squence
talsibony
„thisisunsafe” BYPASS_SEQUENCE było jedyną rzeczą z tej strony, która działała dla mnie na Mac Chrome 72. Wydaje mi się, że nie musiałem zawracać sobie głowy tworzeniem mojego certyfikatu z podpisem własnym!
Jono
95

Linux

Jeśli używasz Linuksa, możesz także śledzić oficjalne strony wiki:

Gruntownie:

  • kliknij ikonę kłódki za pomocą X,
  • wybierz Informacje o certyfikacie
  • przejdź do zakładki Szczegóły
  • Kliknij Eksportuj ... (zapisz jako plik)

Teraz następujące polecenie doda certyfikat (gdzie TWOJE_PLIK to eksportowany plik):

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

Aby wyświetlić listę wszystkich certyfikatów, uruchom następujące polecenie:

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

Jeśli nadal nie działa, ten błąd może dotyczyć: Problem 55050: Błąd SSL Ubuntu 8179

PS libnss3-toolsPrzed użyciem powyższych poleceń upewnij się, że masz .

Jeśli nie masz, zainstaluj go poprzez:

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

Jako bonus możesz użyć następujących przydatnych skryptów:

$ 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'

Stosowanie:

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

Rozwiązywanie problemów

  • Uruchom Chrome z --auto-ssl-client-authparametrem

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

kenorb
źródło
Doskonale, uwielbiam twoje skrypty. Nie potrzebujesz QUIT (zresztą i tak nie ma takiej komendy HTTP jak QUIT) i nie potrzebujesz też sed, narzędzia nss mogą odfiltrować cert między BEGIN a END CERT. Więc download_cert.shmoże to być po prostu:echo | openssl s_client -connect $1:443
Paul Tobias
Wypróbowałem inne opcje, ale tylko ta obecnie działa w Chrome 4x dla systemu Linux, którego nie można zaimportować do żadnego sklepu przy użyciu wbudowanych narzędzi.
Kendrick
93

Na komputerze Mac możesz utworzyć certyfikat, któremu w pełni ufają Chrome i Safari na poziomie systemu, wykonując następujące czynności:

    # 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

Powyższe wykorzystuje poniższe skrypty i plik pomocniczy v3.ext, aby uniknąć błędów braku alternatywnej nazwy podmiotu

Jeśli chcesz utworzyć nowy samopodpisany certyfikat, który jest w pełni zaufany, korzystając z własnych uprawnień administratora, możesz to zrobić za pomocą tych skryptów.

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%%

Jeszcze jeden krok - jak sprawić, by samopodpisane certyfikaty były w pełni zaufane w Chrome / Safari

Aby zezwolić na pełne zaufanie do samopodpisanych certyfikatów w Chrome i Safari, musisz zaimportować nowy urząd certyfikacji na komputer Mac. Aby to zrobić, postępuj zgodnie z tymi instrukcjami lub bardziej szczegółowymi instrukcjami dotyczącymi tego ogólnego procesu na stronie internetowej mitmproxy :

Możesz to zrobić na dwa sposoby, w wierszu polecenia, używając tego polecenia, które wyświetli monit o podanie hasła:

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

lub za pomocą Keychain Accessaplikacji:

  1. Otwórz dostęp do pęku kluczy
  2. Wybierz „System” z listy „Breloki”
  3. Wybierz „Certyfikaty” z listy „Kategoria”
  4. Wybierz „Plik | Importuj elementy ...”
  5. Przejdź do pliku utworzonego powyżej „rootCA.pem”, wybierz go i kliknij „Otwórz”
  6. Wybierz nowo zaimportowany certyfikat z listy „Certyfikaty”.
  7. Kliknij przycisk „i” lub kliknij prawym przyciskiem myszy swój certyfikat i wybierz „Uzyskaj informacje”
  8. Rozwiń opcję „Zaufanie”
  9. Zmień „Korzystając z tego certyfikatu” na „Zawsze ufaj”
  10. Zamknij okno dialogowe, a pojawi się monit o podanie hasła.
  11. Zamknij i ponownie otwórz wszystkie karty używające domeny docelowej, a zostanie ona bezpiecznie załadowana!

i jako bonus, jeśli potrzebujesz klientów Java do zaufania do certyfikatów, możesz to zrobić, importując swoje certyfikaty do magazynu kluczy Java. Uwaga: spowoduje to usunięcie certyfikatu z magazynu kluczy, jeśli już istnieje, ponieważ należy go zaktualizować na wypadek zmiany rzeczy. Oczywiście robi to tylko w przypadku importowanych certyfikatów.

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
Brad Parks
źródło
Wystąpił „Błąd otwierania klucza prywatnego rootCA.key” podczas działania $ ./create_root_cert_and_key.sh. macOS 10.12.4 i OpenSSL 0.9.8zh 14 stycznia 2016 r.
pączek
1
Uruchomienie $ openssl genrsa -out rootCA.key 2048przed $ ./create_root_cert_and_key.shnaprawia błąd „Błąd otwierania klucza prywatnego rootCA.key”, na który wpadłem.
pączek
@donut - dziękuję za zwrócenie na to uwagi - zduplikowałem ten wiersz, więc jestem pewien, że spowodowało to problem, który widziałeś ...
Brad Parks,
openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrwyświetla komunikat o błędzie „Błąd otwierania PRivate Key device.key” Myślałem, że to polecenie powinno zostać utworzone device.key, ale z jakiegoś powodu wydaje się, że próbuję je odczytać
Lenny
2
Zrozumiałem, że rozwiązaniem (na wypadek, gdyby ktoś to trafił) było przejście -keyna -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny
90

AKTUALIZACJA 11/2017: Ta odpowiedź prawdopodobnie nie będzie działać w przypadku większości nowszych wersji Chrome.

AKTUALIZACJA 02/2016: Lepsze instrukcje dla użytkowników komputerów Mac można znaleźć tutaj .

  1. W witrynie, którą chcesz dodać, kliknij prawym przyciskiem myszy czerwoną ikonę kłódki na pasku adresu:wprowadź opis zdjęcia tutaj

    1. Kliknij zakładkę Połączenie , a następnie Informacje o certyfikacie

    2. Kliknij Szczegóły kartę, kliknięcia przycisku Kopiuj do pliku ... . Otworzy się Kreator eksportu certyfikatu, kliknij Dalej, aby przejść do ekranu Format pliku eksportu .

    3. Wybierz binarny X.509 (.CER) zakodowany w DER , kliknij Dalej

    4. Kliknij Przeglądaj ... i zapisz plik na komputerze. Nazwij to czymś opisowym. Kliknij przycisk Dalej , a następnie kliknij przycisk Zakończ .

    5. Otwórz ustawienia Chrome, przewiń w dół i kliknij Pokaż ustawienia zaawansowane ...

    6. W obszarze HTTPS / SSL kliknij Zarządzaj certyfikatami ...

    7. Kliknij zaufanych głównych urzędów certyfikacji kartę, a następnie kliknij Importuj ... przycisk. Spowoduje to otwarcie Kreatora importu certyfikatów. Kliknij przycisk Dalej, aby przejść do ekranu Plik do zaimportowania .

    8. Kliknij Przeglądaj ... i wybierz wcześniej zapisany plik certyfikatu, a następnie kliknij Dalej .

    9. Wybierz Umieść wszystkie certyfikaty w następującym sklepie . Wybrany sklep powinien być Zaufanym głównym urzędem certyfikacji . Jeśli nie jest, kliknij Przeglądaj ... i wybierz go. Kliknij Dalej i zakończ

    10. Kliknij Tak na ostrzeżeniu bezpieczeństwa.

    11. Uruchom ponownie Chrome.

kmgdev
źródło
2
@AJeneral Tak, Chrome zmienił się ponownie. Instrukcje w tym artykule zadziałały ostatnio dla mnie.
kmgdev
2
Ta opcja nie istnieje w Mac Chrome od najnowszej daty tego komentarza.
y3sh
1
@kgrote, Chrome nie ma własnego magazynu certyfikatów. Wszystko, co robi, to dodawanie i usuwanie systemu Windows. W związku z tym lepszym sposobem jest po prostu certmgr.mscdodawanie i usuwanie certyfikatów.
Pacerier,
1
Działa dla mnie, dzięki. Musiałem zrestartować Chrome i, co najważniejsze, mój certyfikat musiał wygasnąć przed 2017 rokiem. SHA-1 rzeczy.
ioanb7,
1
CHROM ZMIENIŁ SIĘ PONOWNIE! Teraz krok „Na pasku adresu kliknij mały zamek przyciskiem X. Spowoduje to wyświetlenie małego ekranu informacyjnego”. nie działa
Bruno Bronosky,
59

Jeśli korzystasz z komputera Mac i nie widzisz karty eksportu ani sposobu uzyskania certyfikatu, działało to dla mnie:

  1. Kliknij blokadę przed https: //
  2. Przejdź do zakładki „Połączenie”
  3. Kliknij „Informacje o certyfikacie”

    Teraz powinieneś zobaczyć to: Różne informacje oczywiście i twoje powinny być jeszcze oznaczone jako zaufane (w przeciwnym razie prawdopodobnie by cię tu nie było)

  4. Przeciągnij tę małą ikonę certyfikatu na pulpit (lub gdziekolwiek).

  5. Kliknij dwukrotnie pobrany plik .cer, który powinien zaimportować go do pęku kluczy i otworzyć Dostęp do pęku kluczy do listy certyfikatów.

    W niektórych przypadkach to wystarczy i możesz teraz odświeżyć stronę.

    Inaczej:

  6. Kliknij dwukrotnie nowo dodany certyfikat.
  7. W menu rozwijanym zaufania zmień opcję „Podczas korzystania z tego certyfikatu” na „Zawsze ufaj”

Ponownie załaduj stronę, o której mowa, i powinna być rozwiązana problem! Mam nadzieję że to pomoże.


Edytuj z Wolpha

Aby to trochę ułatwić, możesz użyć następującego skryptu ( źródła ):

  1. Zapisz następujący skrypt jako 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. Ustaw skrypt jako wykonywalny (z powłoki):

    chmod +x whitelist_ssl_certificate.ssh
  3. Uruchom skrypt dla żądanej domeny (wystarczy skopiować / wkleić pełne adresy URL):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
LunaCodeGirl
źródło
1
To podejście działało dla mnie w systemie OS X Mavericks, nie było dostępnej opcji eksportu , jak opisano w górnej odpowiedzi powyżej.
Kevin Leary
Działa świetnie. Blokada przed https jest nadal przekreślona, ​​ale jest w porządku, ponieważ nie ma już irytującego wyskakującego okienka.
dokładnie
To działało dla mnie na Mac Catalina. Dzięki! :)
Saurabh
58

ZAKTUALIZOWANO 23.04.2020

Zalecane przez zespół Chromium

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

Szybkie, super łatwe rozwiązanie

Istnieje sekretna fraza obejściowa, którą można wpisać na stronie błędu, aby Chrome nadal działał pomimo błędu bezpieczeństwa: to isssafe (we wcześniejszych wersjach Chrome wpisz badidea , a nawet wcześniej, niebezpieczeństwo ). DO NOT USE TO CHYBA dokładnie zrozumieć, dlaczego jest to potrzebne!

Źródło:

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

(UWAGA, że window.atob('dGhpc2lzdW5zYWZl')rozwiązuje to thisisunsafe)

Najnowsza wersja źródła to @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js, a window.atobfunkcję można wykonać w konsola JS.

Aby dowiedzieć się, dlaczego zespół Chrome zmienił frazę obejściową (po raz pierwszy):

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

Jeśli wszystko inne zawiedzie (rozwiązanie nr 1)

W przypadku szybkich działań jednorazowych, jeśli opcja „Kontynuuj mimo wszystko” nie jest dostępna lub fraza pomijająca nie działa, ten hack działa dobrze:

  1. Zezwalaj na błędy certyfikatów localhost, włączając tę ​​flagę (uwaga Chrome wymaga ponownego uruchomienia po zmianie wartości flagi):

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

    (i odpowiedź na głosowanie https://stackoverflow.com/a/31900210/430128 autor: @Chris)

  2. Jeśli witryna, z którą chcesz się połączyć localhost, jest skończona. W przeciwnym razie skonfiguruj tunel TCP do lokalnego nasłuchiwania na porcie 8090 i połącz się broken-remote-site.comz portem 443, upewnij się, że socatzainstalowałeś i uruchomiłeś coś takiego w oknie terminala:

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

  3. Przejdź do https: // localhost: 8090 w przeglądarce.

Jeśli wszystko inne zawiedzie (Rozwiązanie nr 2)

Podobnie do „Jeśli wszystko inne zawiedzie (Rozwiązanie nr 1)”, tutaj konfigurujemy proxy do naszej usługi lokalnej za pomocą ngrok . Ponieważ możesz uzyskać dostęp do tuneli ngrok http za pośrednictwem TLS (w takim przypadku jest on zakończony przez ngrok z ważnym certyfikatem) lub przez punkt końcowy inny niż TLS, przeglądarka nie będzie narzekać na nieprawidłowe certyfikaty.

Pobierz i zainstaluj ngrok, a następnie ujawnij go za pomocą ngrok.io:

ngrok http https://localhost

ngrok uruchomi się i poda nazwę hosta, z którą można się połączyć, a wszystkie żądania zostaną tunelowane z powrotem na komputer lokalny.

Raman
źródło
10
Jak podano na quora.com/… , inną opcją jest kliknięcie w dowolnym miejscu na stronie i napisanie „badidea”
smihael
Każdy, kto próbuje użyć localhost z https dla pracowników usług, pierwszy punkt If-all-
fail
to nadal będzie traktować certyfikat jako nieprawidłowy i sprawi, że hasło zarządza odmową pracy
Ray Foss
34

Dla środowiska testowego

Możesz użyć --ignore-certificate-errorsjako parametru wiersza polecenia podczas uruchamiania chrome (działa na wersji 28.0.1500.52 na Ubuntu).

Spowoduje to, że zignoruje błędy i nawiąże połączenie bez ostrzeżenia. Jeśli masz już uruchomioną wersję Chrome, musisz ją zamknąć przed ponownym uruchomieniem z wiersza poleceń lub otworzy się nowe okno, ale zignorujesz parametry.

Konfiguruję Intellij do uruchamiania Chrome w ten sposób podczas debugowania, ponieważ serwery testowe nigdy nie mają prawidłowych certyfikatów.

Nie polecałbym jednak normalnego przeglądania w ten sposób, ponieważ kontrole certyfikatów są ważną funkcją bezpieczeństwa, ale dla niektórych może to być pomocne.

Kieran Moore
źródło
5
Działa dla mnie w systemie Windows 8! Właśnie kliknąłem prawym przyciskiem myszy chromowany skrót> Właściwości> Zmieniono pole „Docelowe” w ten sposób (zwróć uwagę, że po cytacie należy dodać „--ignore-certyfikat-błędy” i spację): „C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ign-certyfikaty-błędy
mikhail-t
1
To nie odpowiada na pytanie i jest niebezpieczne. Pytanie brzmiało: jak przekonać Chrome do certyfikatu serwera z podpisem własnym; nie jak ignorować ostrzeżenia i błędy.
jww
1
To jedyne rozwiązanie, które działało dla mnie w Chrome (63.0.3239.108) z Windows 7 (64-bit). Ze względów bezpieczeństwa stworzyłem specjalną ikonę na pulpicie, którą uruchamiam tylko podczas programowania na lokalnej maszynie wirtualnej. Importowanie samopodpisanych certyfikatów lokalnych, strojenie chrome: // flags i HSTS domena nie pomogło. Chrome zdecydowanie powinien zachować ten stary, dobry przycisk „Dodaj wyjątek bezpieczeństwa” - zaoszczędziłoby mi to 2 godziny zmagania się z bezużytecznymi ustawieniami.
lubosdz
Ten samouczek działał jak urok! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins
20

Jak ktoś zauważył, musisz ponownie uruchomić WSZYSTKIE przeglądarki Chrome, a nie tylko okna przeglądarki. Najszybszym sposobem na to jest otwarcie karty, aby ...

chrome://restart

DejerNet
źródło
Hej! Chciałem tylko zaznaczyć, że to właśnie to mnie naprawiło. Dodawałem niestandardowy urząd certyfikacji do magazynu zaufania, zawsze tak dla mnie działało. Próbowałem Firefoksa i działałem bezbłędnie, ale nie Chrome. Na koniec było tak, ponieważ wydaje się, że musisz w pełni zrestartować Chrome, jak wspomniałeś. Możliwe, że Chrome używa tego samego magazynu zaufania, dopóki te procesy w tle są nadal uruchomione.
Jose Cifuentes
19

WINDOWS JUN / 2017 Windows Server 2012

Śledziłem odpowiedź na @Brad Parks. W systemie Windows należy zaimportować plik rootCA.pem w sklepie Zaufane główne certyfikaty.

Zrobiłem następujące kroki:

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

Gdzie v3.ext to:

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

Następnie, w moim przypadku, mam własną aplikację internetową, więc muszę powiązać certyfikat z adresem IP i portem, certyfikat powinien znajdować się w MOIM sklepie z informacjami o kluczu prywatnym, więc wyeksportowałem do formatu pfx.

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

Za pomocą konsoli mmc (Plik / Dodaj lub usuń przystawki / Certyfikaty / Dodaj / Computert Konto / Komputer lokalny / OK) Zaimportowałem plik pfx w sklepie osobistym.

Później użyłem tego polecenia do powiązania certyfikatu (możesz także użyć narzędzia HttpConfig):

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

certhash = Odcisk certyfikatu

appid = GUID (twój wybór)

Najpierw próbowałem zaimportować certyfikat „device.crt” na Zaufane główne urzędy certyfikacji na różne sposoby, ale wciąż pojawia się ten sam błąd:

wprowadź opis zdjęcia tutaj

Ale zdałem sobie sprawę, że powinienem zaimportować certyfikat organu głównego, a nie certyfikat dla domeny. Więc użyłem konsoli mmc (Plik / Dodaj lub usuń przystawki / Certyfikaty / Dodaj / Computert Konto / Komputer lokalny / OK) Zaimportowałem rootCA.pem w sklepie Zaufane główne certyfikaty.

wprowadź opis zdjęcia tutaj

Uruchom ponownie Chrome i et voilà to działa.

Z localhost:

wprowadź opis zdjęcia tutaj

Lub z adresem IP:

wprowadź opis zdjęcia tutaj

Jedyne, czego nie mogłem osiągnąć, to to, że ma przestarzały szyfr (czerwony kwadrat na zdjęciu). W tej kwestii docenia się pomoc.

W makecert nie jest możliwe dodanie informacji SAN. Dzięki New-SelfSignedCertificate (Powershell) możesz dodawać informacje o sieci SAN, to także działa.

UUHHIVS
źródło
2
Ważne: Uruchom OpenSSL jako administrator.
Jose A,
To najlepsza odpowiedź i nadal działa w przeglądarce Chrome [71.0.3578.98] od stycznia 2019 r.
ShadeBlack
Wow, zadziałało, bardzo dziękuję (w Chrome 75 - lipiec 2019). Nie potrzebujesz tego netsh httpkroku, chyba że używasz serwera Windows. Nie sądzę też, aby konieczne było eksportowanie pliku cert do pfx.
potwierdzone działanie: Chrome 81 - maj 2020 - Windows 7
petrosmm
15
  1. Dodaj certyfikat CA w zaufanym głównym magazynie CA.

  2. Idź do chrome i włącz tę flagę!

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

W końcu po prostu użyj domeny * .me lub dowolnych prawidłowych domen, takich jak * .com i * .net, i zachowaj je w pliku hosta. Dla moich lokalnych programistów używam * .me lub * .com z plikiem hosta utrzymywanym w następujący sposób:

  1. Dodaj do hosta. C: / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

Uwaga: jeśli przeglądarka jest już otwarta, błąd będzie nadal wyświetlany. Zamknij więc przeglądarkę i zacznij od nowa. Jeszcze lepiej, przejdź incognito lub rozpocznij nową sesję, aby uzyskać natychmiastowy efekt.

Ariel
źródło
Wydaje się, że jest to to samo, co odpowiedź najczęściej głosowana .
Michael - Where's Clay Shirky
Dodałem tylko nazwy domen dozwolone w programowaniu lokalnym, tj. Witryny * .me, do pliku hosta w systemie Windows. Ludzie dodają certyfikat, ale czasami host po prostu nie weryfikuje weryfikacji SSL, nawet jeśli certyfikat jest poprawnie zainstalowany. W takim przypadku tworzymy nową sesję. Dodałem tylko te wskazówki. Przeszedłem przez tę dziurę królika zbyt głęboko, więc chciałem się upewnić, że ktoś wie, co zrobić, jeśli będzie to potrzebne.
Ariel,
14

Czy jesteś pewien, że adres strony jest obsługiwany, ponieważ jest taki sam jak certyfikat? Miałem te same problemy z Chrome i samopodpisanym certyfikatem, ale ostatecznie stwierdziłem, że było to bardzo wybredne w kwestii sprawdzania poprawności nazwy domeny na certyfikacie (tak jak powinno być).

Chrome nie ma własnego magazynu certyfikatów i używa własnego systemu Windows. Chrome nie umożliwia jednak importowania certyfikatów do sklepu, dlatego należy je dodać za pośrednictwem IE.

Instalowanie certyfikatów w Google Chrome

Instalowanie certyfikatów w przeglądarce Internet Explorer

Zobacz także kilka różnych podejść do tworzenia certyfikatów z podpisem własnym (zakładam, że używasz usług IIS, o których jeszcze nie wspomniałeś).

Jak utworzyć certyfikat z podpisem własnym w IIS 7

Ira Rainey
źródło
Witryna, o której mowa, to localhost , a CN certyfikatu to „localhost”. Tak, zainstalowałem certyfikat w magazynie certyfikatów systemu Windows. Zarówno IE, jak i Chrome narzekają na certyfikat.
pjohansson
Nie jestem pewien, czy używasz IIS czy Apache, ale sprawdź dodatkowy link, który właśnie dodałem podczas tworzenia certyfikatów z podpisem własnym dla IIS.
Ira Rainey,
Ze względu na niezwykle wybredne podejście do sprawdzania poprawności nazwy domeny po stronie cert : czy ktoś wie o tym więcej? Mam problem (to jest 2019 r.) Na Androidzie 9 z certyfikatem głównym, który jest obwiniany przez Google Chrome jako niezabezpieczony. Jest OK dla FF i na komputerze.
BairDev
7

Przeszedłem proces korzystania z tego, co sugerował bjnord: Google Chrome, Mac OS X i certyfikaty SSL z podpisem własnym

To, co pokazano na blogu, nie działało.

Jednak jednym z komentarzy na blogu było złoto:

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

Będziesz musiał śledzić blog, jak uzyskać plik cert, a następnie możesz użyć powyższego polecenia i powinieneś iść.

James Oravec
źródło
7

GUI do zarządzania certyfikatami SSL na Chromium w systemie Linux NIE działał poprawnie dla mnie. Jednak ich doktorzy podali prawidłową odpowiedź. Sztuką było uruchomienie poniższej komendy, która importuje samopodpisany certyfikat SSL. Wystarczy zmienić nazwę z poniższych <certificate-nickname>a certificate-filename.cer, potem restart chrom / chrom.

Z Dokumentów:

W systemie Linux Chromium korzysta ze współużytkowanej bazy danych NSS. Jeśli wbudowany menedżer nie działa, możesz skonfigurować certyfikaty za pomocą narzędzi wiersza polecenia NSS.

Zdobądź narzędzia

  • 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"(Musisz uruchomić wszystkie poniższe polecenia z nssprefiksem, np nsscertutil.). Otwierauseuse:sudo zypper install mozilla-nss-tools

Aby zaufać samopodpisanemu certyfikatowi serwera, powinniśmy użyć

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

Wyświetl wszystkie certyfikaty

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

TRUSTARGS to trzy ciągi zerowe lub więcej znaków alfabetycznych, oddzielone przecinkami. Określają, w jaki sposób należy ufać certyfikatowi w zakresie SSL, e-maili i podpisywania obiektów, i są wyjaśnione w dokumentach certutil lub w blogu Meeny na temat flag zaufania.

Dodaj certyfikat osobisty i klucz prywatny do uwierzytelnienia klienta SSL Użyj polecenia:

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

aby zaimportować certyfikat osobisty i klucz prywatny przechowywane w pliku PKCS # 12. Wartości TRUSTARGS certyfikatu osobistego zostaną ustawione na „u, u, u”.

Usuń certyfikat certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Fragment: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

TetraDev
źródło
7

Filippo Valsorda napisał narzędzie wieloplatformowe mkcert, aby zrobić to dla wielu sklepów zaufania. Przypuszczam, że napisał to z tego samego powodu, dla którego jest tak wiele odpowiedzi na to pytanie: trudno jest zrobić „właściwą” rzecz dla certyfikatów SubjectAltName podpisanych przez zaufany główny urząd certyfikacji.

mkcert jest zawarty w głównych systemach zarządzania pakietami dla Windows, macOS i kilku odmian Linuxa.

mkcert

mkcertto proste narzędzie do tworzenia lokalnie zaufanych certyfikatów programistycznych. Nie wymaga konfiguracji.

$ 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" ✅
Michael - Where's Clay Shirky
źródło
6

Klikając małą przekreśloną ikonę kłódki obok adresu URL, pojawi się pole wyglądające tak:

wprowadź opis zdjęcia tutaj

Po kliknięciu łącza Informacje o certyfikacie zobaczysz następujące okno dialogowe:

wprowadź opis zdjęcia tutaj

Informuje, który magazyn certyfikatów jest właściwy, jest to sklep Zaufane główne urzędy certyfikacji .

Możesz użyć jednej z metod opisanych w innych odpowiedziach, aby dodać certyfikat do tego sklepu lub użyć:

certutil -addstore -user "ROOT" cert.pem
  • ROOT to wspomniana wcześniej wewnętrzna nazwa magazynu certyfikatów.
  • cert.pem to nazwa twojego podpisanego certyfikatu.
Der Hochstapler
źródło
1
certutil -addstore -user "ROOT" cert.pemjest Windows?
Pacerier,
1
@Pacerier: Prawidłowo, to dla systemu Windows.
Der Hochstapler,
Masz go w posiadaniu, Trusted Root Certification Authoritiesale nadal pozostaje problem: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, chrome 78
próbaHard
6

To zadziałało dla mnie. Zobacz: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

Na pasku adresu kliknij małą blokadę za pomocą X. Spowoduje to wyświetlenie małego ekranu informacyjnego. Kliknij przycisk z napisem „Informacje o certyfikacie”.

Kliknij i przeciągnij obraz na pulpit. Wygląda jak mały certyfikat.

Kliknij dwukrotnie. Spowoduje to wyświetlenie narzędzia Dostęp do pęku kluczy. Wprowadź hasło, aby je odblokować.

Pamiętaj, aby dodać certyfikat do pęku kluczy systemu, a nie pęku kluczy logowania. Kliknij „Zawsze ufaj”, chociaż wydaje się, że to nic nie robi.

Po dodaniu kliknij go dwukrotnie. Może być konieczne ponowne uwierzytelnienie.

Rozwiń sekcję „Zaufanie”.

„Podczas korzystania z tego certyfikatu” ustaw „Zawsze ufaj”

Vincil Bishop
źródło
6

Próbowałem wszystkiego i co sprawiło, że działało: Podczas importowania wybierz odpowiednią kategorię, a mianowicie Zaufane główne urzędy certyfikacji :

(przepraszam, to niemiecki, ale po prostu podążaj za obrazem)

wprowadź opis zdjęcia tutaj

Hannes Schneidermayer
źródło
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
)
Alex Ivasyuv
źródło
1
To jedyny, który pracował dla mnie z chromem 77. Dziękuję za uratowanie mi dnia.
Romain,
Jak korzystać z wygenerowanych plików? Rozumiem, jak korzystać z plików .crt i .key domeny, ale do czego służy plik .csr? I jak korzystać z plików rootCA. *? Proszę rozwinąć swoją odpowiedź ...
Chiwda
Dziękuję bardzo, właśnie uratowałeś mi dzień!
dodancs
6

Ten post jest już zalewany odpowiedziami, ale stworzyłem skrypt bash oparty na niektórych innych odpowiedziach, aby ułatwić wygenerowanie samopodpisanego certyfikatu TLS ważnego w Chrome (testowane w Chrome 65.x). Mam nadzieję, że jest to przydatne dla innych.

skrypt bash z podpisem własnym tls

Po zainstalowaniu ( i zaufaniu ) certyfikatu nie zapomnij ponownie uruchomić Chrome ( chrome://restart)


Kolejnym narzędziem, które warto sprawdzić, jest cfsslzestaw narzędzi CloudFlare :

cfssl

Logan
źródło
6

Aby utworzyć samopodpisany certyfikat w systemie Windows, któremu będzie ufać Chrome w wersji 58 i nowszej, uruchom program Powershell z podwyższonymi uprawnieniami i wpisz:

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!!

Po wykonaniu tej czynności certyfikat zostanie zapisany na certyfikatach komputera lokalnego w magazynie Personal \ Certificates .

Chcesz skopiować ten certyfikat do magazynu Zaufane główne urzędy certyfikacji \ Certyfikaty .

Można to zrobić na jeden sposób: kliknij przycisk Start systemu Windows i wpisz certlm.msc. Następnie przeciągnij i upuść nowo utworzony certyfikat do sklepu Zaufane główne urzędy certyfikacji \ Certyfikaty zgodnie z poniższym zrzutem ekranu. wprowadź opis zdjęcia tutaj

mpowrie
źródło
jak to zrobić w Mac proszę? dzięki :)
Artanis Zeratul
@mpowrie. Po wygenerowaniu tego, jak połączyć to z serwerem Apache? Na serwerze localhost.
Ifedi Okonkwo
Ifedi Okonkwo: Nie jestem pewien z serwerem Apache przepraszam, ale z IIS dodajesz powiązanie witryny typu https, dołączasz pełną nazwę hosta i wybierasz certyfikat SSL.
mpowrie
To działa jak urok. Powiem, że musisz zrobić jeden dodatkowy krok, jeśli chcesz przypisać ten certyfikat jako wiążący ... i że certyfikat musi również znajdować się w Osobiste> Certyfikaty. Przeciąganie i upuszczanie z jakiegoś powodu faktycznie usunęło go z certyfikatów osobistych i umieściło w zaufanych certyfikatach. Więc skopiuj i wklej to.
StephenPAdams
5

Poprawka lokalnego hosta SSL / HTTPS na Mac / OSX:

  1. Kliknij czerwoną kłódkę z krzyżykiem na pasku adresu podczas próby otwarcia środowiska lokalnego hosta https. Otworzy się okno z informacjami o certyfikacie.

  2. Kliknij okno informacyjne „Szczegóły”

  3. Chromowane narzędzia programistyczne zostaną otwarte na karcie „Bezpieczeństwo”. Kliknij Wyświetl certyfikat . Obraz certyfikatu
  4. Dodaj go do pęku kluczy „System” (a nie pęku kluczy „login”, który jest domyślnie zaznaczony).

  5. Otwórz brelok (ponownie) i znajdź certyfikat. Kliknij i upewnij się, że „Ufasz” wszystkim.

  6. Uruchom ponownie Chrome i powinno działać.

cscheltinga
źródło
Głupi interfejs graficzny może nie akceptować certyfikatu w systemie MacoOS 10.14.5, ale można go zaimportować security import filename.pem -k ~/Library/Keychains/login.keychain. Grafika podaje błąd -25294
koder łodzi
5

Wystąpił ten sam problem: zainstalowałem certyfikat w sklepie „Zaufane główne urzędy systemu Windows”, a Chrome nadal z odrzuceniem certyfikatu, z błędem ERR_CERT_COMMON_NAME_INVALID. Pamiętaj, że gdy certyfikat nie jest poprawnie zainstalowany w sklepie, pojawia się błąd ERR_CERT_AUTHORITY_INVALID.

Jak sugeruje nazwa błędu, ten komentarz i to pytanie , problem leżał w zadeklarowanej nazwie domeny w certyfikacie. Gdy podczas generowania certyfikatu pojawiło się zapytanie o „nazwę zwykłą”, musiałem wprowadzić nazwę domeny, której używałem, aby uzyskać dostęp do witryny ( localhostw moim przypadku). Uruchomiłem ponownie Chrome za pomocą chrome://restarti ostatecznie byłem zadowolony z tego nowego certyfikatu.

Hugo Wood
źródło
Używam również localhost, ale chrome nie jest z tego zadowolony imgur.com/a/mjlglVz Windows 10, Chrome 78. Postępowałem zgodnie z instrukcją tutaj: stackoverflow.com/a/44398368/4983983 Dostęp do strony
uzyskuję
używanie zwykłej nazwy „localhost” prawie działało, a potem w końcu zadziałało, gdy uruchomiłem także chrome z opcją--allow-insecure-localhost
pestofagiczny
5

Począwszy od Chrome 58+ zaczęłam otrzymywać błąd certyfikatu na macOS z powodu braku SAN. Oto, jak ponownie uzyskać zieloną blokadę na pasku adresu.

  1. Wygeneruj nowy certyfikat za pomocą następującego polecenia:

    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. Zaimportuj server.crtplik do KeyChain, a następnie kliknij dwukrotnie certyfikat, rozwiń Zaufanie i wybierz Zawsze ufaj

Odśwież stronę https://domain.dev w Google Chrome, aby wróciła zielona blokada.

Adriano Rosa
źródło
Działa to w przypadku subdomen, api.domain.devale nadal mam stronę z ostrzeżeniem na 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.jakiś pomysł?
François Romain
5

W przypadku Chrome na MacOS, jeśli przygotowałeś certyfikat:

  • Zamknij Chrome ( cmd+ Q).
  • Uruchom aplikację Keychain Access i otwórz kategorię „Certyfikaty”.
  • Przeciągnij plik certyfikatu do okna Dostęp do pęku kluczy i wpisz hasło do pliku certyfikatu.
  • Kliknij dwukrotnie swój certyfikat i rozwiń listę „Zaufanie”.
    • W wierszu „Podczas korzystania z tego certyfikatu” wybierz „Zawsze ufaj”.
    • Zamknij to i wpisz hasło.
  • Uruchom Chrome i wyczyść wszystkie pamięci podręczne.
  • Sprawdź, czy wszystko jest w porządku.
Alykoff Gali
źródło
5

Umożliwianie bezpiecznego działania lokalnego hosta za pomocą tej metody chrome: // flags / # allow-insecure-localhost

Wystarczy, że musisz utworzyć nazwę hosta programistycznego dla xxx.localhost.

Ziarno soi
źródło