Am creat un certificat SSL auto-semnat pentru localhost CN. Firefox acceptă acest certificat, după ce, inițial, plângându-se, cum era de așteptat. Chrome și IE, cu toate acestea, refuză să-l accepte, chiar și după adăugarea certificatului pentru sistemul certificat magazin sub Rădăcinile Încredere. Chiar dacă certificatul este listat ca sunt instalate corect atunci când am faceți clic pe "Vezi certificatul informații" în google Chrome's HTTPS pop-up, care încă insistă că certificatul nu poate fi de încredere.
Ce ar trebui să fac pentru a obține Chrome să accepte certificatul și nu te mai plânge?
Pentru localhost
numai:
Pur și simplu inserați acest lucru în chrome:
chrome://flags/#allow-insecure-localhost
Ar trebui să vezi textul evidențiat spunând: Permite invalid certificate pentru resurse încărcat de la localhost
Faceți Clic Pe "Enable".
Aceasta a lucrat pentru mine:
Ar trebui să obțineți frumos verde de blocare de pe paginile dvs. acum.
EDIT: am încercat din nou pe o mașină nouă și certificatul nu apar pe Gestionarea Certificatelor fereastra doar prin continuarea de la roșu certificat pagină. Am avut de a face următoarele:
este traversat în roșu), faceți clic pe blocare > Certificat de Informare. **NOTĂ:** pe versiunile mai noi de chrome, trebuie să deschizi Developer Tools > Securitate și selectați Vizualizare certificat
.. Alege
PKCS #7, singur certificat` ca format de fișier.PKCS #7, singur certificat
ca fișier de tip.UPDATE PENTRU CHROME 58+ (LANSAT 2017-04-19)
Ca de Chrome 58, capacitatea de a identifica gazdă folosind doar commonName
a fost eliminat. Certificatele trebuie să folosească de acum subjectAltName să identifice lor gazdă(s). A se vedea în continuare [discuție](https://groups.google.com/a/chromium.org/forum/m/#!subiect/securitate-dev/IGT2fLJrAeo) și [bug tracker aici](https://bugs.chromium.org/p/chromium/issues/detail?id=308330). În trecut, pentru subjectAltName
a fost folosit doar pentru multi-gazdă cert deci, unele interne CA instrumente don't să le includă.
În cazul în care auto-semnat cert funcționat bine în trecut dar dintr-o dată a început să genereze erori în Chrome 58, acesta este motivul.
Deci, indiferent de metoda pe care o folosesc pentru a genera auto-semnat cert (sau cert semnat de un auto-semnat CA), asigurați-vă că server's cert conține o subjectAltNamebuna
DNS` și/sau " PA " de intrare/intrări, chiar daca's doar pentru un singur host.
Pentru openssl, acest lucru înseamnă ta OpenSSL config (/etc/ssl/openssl.cnf
pe Ubuntu) ar trebui să aibă ceva similar la urma pentru un singur host:
[v3_ca] # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com
sau pentru gazde multiple:
[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
În Chrome's cert viewer (care s-a mutat la "Securitate" fila sub F12) ar trebui să vedeti enumerate în Extensii
ca Certificat subject Alternative Name
:
Pe Mac, puteți utiliza Keychain Access utilitate pentru a adăuga certificat auto-semnat la Sistemul de breloc, și apoi, Chrome va accepta. Am găsit pas-cu-pas instrucțiunile de aici:
Google Chrome, Mac OS X și Certificate SSL Auto-Semnat
Practic:
Faceți clic oriunde pe pagină și introduceți un BYPASS_SEQUENCE
"thisisunsafe
" este un BYPASS_SEQUENCE pentru Chrome versiunea 65
"badidea
" versiune Chrome 62 - 64.
" "pericol" " folosit pentru a lucra în versiunile anterioare de Chrome
Nu't nevoie pentru a uite pentru câmpul de intrare, doar introduceți-l. Se simte ciudat, dar este de lucru.
L-am incercat pe Mac High Sierra.
Să verificați dacă și-au schimbat din nou du-te la cele mai Recente crom Sursa Code
Să se uite pentru BYPASS_SEQUENCE, în momentul de față se pare că:
var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');
Acum au camuflat, dar pentru a vedea real BYPASS_SEQUENCE puteți rula următoarea linie într-un browser consola.
console.log(window.atob('dGhpc2lzdW5zYWZl'));
UPDATE 11/2017: Acest răspuns, probabil, a câștigat't de lucru pentru cele mai noi versiuni de Chrome.
ACTUALIZARE 02/2016: mai Bine Instrucțiuni pentru Utilizatorii de Mac Pot fi Găsite Aici.
Pe site-ul care doriți să adăugați, faceți clic dreapta pe roșu pictogramă lacăt în bara de adrese:
Faceți clic pe tab-ul etichetat Conexiune, apoi faceți clic pe Certificat de Informare
Faceți clic pe ** Detalii filă, faceți clic pe butonul Copie la Dosar.... Aceasta va deschide Certificatul de Export Wizard, faceți clic pe Următorul pentru a ajunge la Format de Fișier de Export** ecran.
Alege DER codificate binar X. 509 (.CER), faceți clic pe Următorul
Faceți clic pe Browse... și de a salva fișierul pe computer. Un nume descriptiv. Faceți clic pe Următorul, apoi faceți clic pe Termin.
Deschide setările Chrome, derulați în jos și faceți clic pe afișați setările avansate...
Sub HTTPS/SSL, faceți clic pe Gestionarea certificatelor...
Faceți clic pe Autorități de Certificare Rădăcină de Încredere tab, apoi faceți clic pe Import... buton. Aceasta deschide Certificate Import Wizard. Faceți clic pe Următorul pentru a ajunge la Fișier de Import ecran.
Faceți clic pe Browse... și selectați certificatul pe fișierul salvat anterior, apoi faceți clic pe Următorul.
Selectați Loc toate certificatele în următorul depozit. Magazinul selectat ar trebui să fie Autorități de Certificare Rădăcină de Încredere. Dacă e't, faceți clic pe Browse... și selectați-l. Faceți clic pe Următorul și Termin
Faceți clic pe Da pe de avertizare de securitate.
Reporniți Chrome.
Daca're folosind Linux, puteți urmări, de asemenea, acest oficial pagini wiki:
Practic:
Acum, următoarea comandă va adăuga certificat (în cazul în care YOUR_FILE este fișierul exportat):
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
Pentru a lista toate certificatele, executați următoarea comandă:
certutil -d sql:$HOME/.pki/nssdb -L
Dacă încă nu't de lucru, ai putea fi afectate de acest bug: Problema 55050: Ubuntu eroare SSL 8179
P. S. vă Rog, de asemenea, asigurați-vă că ați
Dacă tu nu't au, vă rugăm să-l instalați prin:
sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.
Ca un bonus, puteți utiliza următoarele script-uri la îndemână:
$ 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'
Utilizare:
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
Pe Mac, puteți crea un certificat care's pe deplin sigura de Chrome și Safari la nivel de sistem de a face următoarele:
``
./create_root_cert_and_key.sh
./create_certificate_for_domain.sh mysite.com
./create_certificate_for_domain.sh www.mysite.com www.mysite.com ``
v3.ext
, a a evita subject alternative name lipsește eroriDacă doriți să creați un nou auto-semnat cert că's pe deplin de încredere, folosind propria autoritate rădăcină, o poti face folosind aceste script-uri.
``
openssl genrsa -out rootCA.cheie de 2048 openssl req -x509 -nou -noduri -cheie rootCA.cheie -sha256 -zile 1024 -out rootCA.pem ``
``
dacă [a-z "$1" ] apoi echo "vă Rugăm să furnizați un subdomeniu pentru a crea un certificat pentru"; echo "de ex. www.mysite.com" ieșire; fi
dacă [ ! -f rootCA.pem ]; apoi echo 'vă Rugăm să executați "create_root_cert_and_key.sh" în primul rând, și încercați din nou!' ieșire; fi dacă [ ! -f v3.ext ]; apoi echo 'vă Rugăm să descărcați "v3.ext" fișier și încercați din nou!' ieșire; fi
if [ -f dispozitiv.cheie ]; apoi KEY_OPT=" cheie" altceva KEY_OPT="-keyout" fi
DOMAIN=$1 COMMON_NAME=${2:-*.$1} SUBIECT="/C=CA/ST=None/L=NB/O=Nici unul/NC=$COMMON_NAME" NUM_OF_DAYS=825 openssl req -nou -newkey rsa:2048 -sha256 -noduri $KEY_OPT dispozitiv.-cheie botezului "$POT" dispozitiv.csr cat v3.ext | sed s/%%DOMENIU%%/"$COMMON_NAME"/b > /tmp/v3.ext openssl x509 -req -în dispozitiv.csr -CA rootCA.pem -CAkey rootCA.cheie -CAcreateserial dispozitiv.crt -zile $NUM_OF_DAYS -sha256 -extfile /tmp/v3.ext
mv dispozitiv.csr "$DOMENIU.csr" cp dispozitiv.crt "$DOMENIU.crt"
rm-f dispozitiv.crt;
echo echo "###########################################################################" echo Făcut! echo "###########################################################################" echo "Pentru a utiliza aceste fișiere pe server-ul dvs., copiați pur și simplu de dolari DOMENIU.csr și" echo "dispozitiv.cheia pentru serverul dvs. de web, și de a folosi ca așa (în cazul Apache, de exemplu)" echo echo " SSLCertificateFile /path_to_your_files/$DOMENIU.crt" echo " SSLCertificateKeyFile /path_to_your_files/dispozitiv.cheie" ``
`` authorityKeyIdentifier=keyid,emitentul basicConstraints=CA:FALS keyUsage = digitalSignature, ne © copyright, keyEncipherment, dataEncipherment subjectAltName = @alt_names
[alt_names] DNS.1 = %%DOMENIU%% ``
Pentru a permite auto-semnat certificatele să fie pe DEPLIN încredere în Chrome și Safari, aveți nevoie pentru a importa un nou certificat de autoritate în Mac-ul tău. Pentru a face acest lucru urmați aceste instrucțiuni, sau mai multe instrucțiuni detaliate privind acest proces general pe mitmproxy ul:
Puteți face acest lucru de unul din 2 moduri, de la linia de comandă, folosind această comandă care va solicita parola:
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem
sau prin utilizarea `Keychain Access app:
și ca un bonus, dacă aveți nevoie de java clienți să aibă încredere în certificatele, puteți face acest lucru prin importul cert în java keystore. Notă acest lucru va elimina cert de la chei daca exista deja, ca este nevoie pentru a actualiza în cazul în care lucrurile se schimbă. Aceasta, desigur, numai face acest lucru pentru cert fiind importate.
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
Daca're pe un mac și nu văd de export tab sau cum să obțineți certificatul aceasta a lucrat pentru mine:
Acum ar trebui să vedeți asta:
În unele cazuri, acest lucru este suficient și acum puteți să reîmprospătați pagina.
În caz contrar: 7. Faceți dublu clic pe nou adăugat certificat. 8. Sub încredere în drop-down schimba "atunci Când se utilizează acest certificat" opțiunea de a "Întotdeauna Încredere în"
Acum reîncărcați pagina în cauză și ar trebui să fie o problemă rezolvată! Sper că acest lucru vă ajută.
Pentru a face acest lucru un pic mai ușor, puteți folosi următorul script (sursa):
whitelist_ssl_certificate.ssh
:SERVERNAME=$(echo "$1" | sed -E-e 's/https?:\/\///' -e 's/\/.*//') echo "$SERVERNAME"
dacă [[ "$SERVERNAME" =~ ... ]]; apoi echo "Adăugarea certificat pentru $SERVERNAME" echo -n | openssl s_client -conectează-te $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICAT-/,/-END-CERTIFICAT/p' | tee /tmp/$SERVERNAME.cert sudo de securitate add-încredere-cert -d -r trustRoot -k "/Library/Brelocuri/Sistem.breloc" /tmp/$SERVERNAME.cert altceva echo "Utilizare: $0 www.site.name" echo "http:// și astfel va fi deposedat în mod automat" fi
chmod +x whitelist_ssl_certificate.ssh
./whitelist_ssl_certificate.ssh https://your_website/whatever
**** ACTUALIZAT Apr 3/2018
Nu este un secret bypass expresie, care poate fi introdus în pagina de eroare browserul Chrome să procedeze în ciuda eroare de securitate: thisisunsafe (în versiunile anterioare de Chrome, de tip badidea, și chiar mai devreme, pericol). NU NU UTILIZAȚI ACEST LUCRU DACĂ NU ÎNȚELEGE EXACT DE CE AI NEVOIE DE EA!
Sursa:
https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/
(REȚINEȚI că fereastra.atob('dGhpc2lzdW5zYWZl')rezolvă a
thisisunsafe`)
Cea mai recentă versiune a sursei este @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js și fereastra.atob funcția poate fi executat într-un JS consola.
Pentru fundal despre ce Chrome echipa s-a schimbat by-pass phrase (prima data):
https://bugs.chromium.org/p/chromium/issues/detail?id=581189
Pentru rapid one-off în cazul în care "Trece Oricum" opțiune nu este disponibilă, nici ocoli fraza este de lucru, acest hack funcționează bine:
chrome://flags/#permite-nesigur-localhost
(și de a vota răspuns https://stackoverflow.com/a/31900210/430128 de @Chris)
socat
instalat și a alerga așa ceva într-o fereastră terminal:socat tcp-listen:8090,reuseaddr,furculita tcp:rupt-remote-ului.com:443
Pentru un mediu de test
Puteți utiliza `--ignore-certificat-erori ca un parametru linia de comandă la lansarea chrome (Lucru pe Versiunea 28.0.1500.52 pe Ubuntu).
Acest lucru va provoca-l să ignore erorile și conectați fără avertisment. Dacă aveți deja o versiune de chrome rulează, veți avea nevoie pentru a închide acest lucru înainte de relansarea de la linia de comandă sau se va deschide o fereastră nouă, dar ignora parametri.
Pot configura Intellij de a lansa chrome, în acest fel, atunci când faci debugging, ca servere de testare nu au certificate valabile.
Am ar't recomanda normal de navigare astfel, deși, ca certificat de controale sunt un important element de securitate, dar acest lucru poate fi util pentru unii.
WINDOWS JUN/2017 Windows Server 2012
Am urmat @Brad Parcuri răspuns. Pe Windows ar trebui să-import rootCA.pem în Certificate Rădăcină de Încredere Autoritățile magazin.
Am făcut următorii pași:
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
În cazul în care v3.ext este:
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
Apoi, în cazul meu, am un auto găzduit web app, așa că am nevoie pentru a lega certificat cu adresa IP și portul, certificatul ar trebui să fie pe magazinul MEU cu cheie privată de informații, așa că am exportate în format pfx.
openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt
Cu consola mmc (Fișier/Adăuga sau Elimina Snap-in-uri/Certificate/Adauga/Computert Cont/selectați computerul local/OK) am importat pfx în magazin Personal.
Mai târziu am folosit aceasta comanda pentru a lega certificat (ai putea folosi, de asemenea, HttpConfig instrument):
netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}
certhash=Certificat Thumprint
appid=GUID (la alegere)
În primul rând am încercat să importați certificatul "dispozitiv.crt" pe Certificate Rădăcină de Încredere Autorităților în diferite moduri, dar am'm încă mai primesc aceeasi eroare:
Dar mi-am dat seama că trebuie să importați un certificat de autoritate rădăcină nu certificat de domeniu. Așa că am folosit consola mmc (Fișier/Adăuga sau Elimina Snap-in-uri/Certificate/Adauga/Computert Cont/selectați computerul local/OK) am importat rootCA.pem în Certificate Rădăcină de Încredere Autoritățile magazin.
Reporniți Chrome și et voilà funcționează.
Cu localhost:
Sau cu adresă IP:
Singurul lucru pe care nu am putut realiza este că, s-a învechit cifru (pătrat roșu pe imagine). Ajutor este apreciat cu privire la acest punct.
Cu makecert nu este posibil să adăugați SAN informații. Cu Nou-SelfSignedCertificate (Powershell) ai putea adăuga SAN informații, de asemenea, funcționează.
Ești sigur că adresa site-ului este de a fi servite ca este la fel ca certificatul? Am avut aceleași probleme cu Chrome și un auto-semnat cert, dar în cele din urmă am găsit-o a fost doar incredibil de pretentios cu privire la validarea numelui de domeniu pe cert (cum ar trebui să fie).
Chrome nu't am's propria cert magazin si foloseste Fereastra's propriu. Cu toate acestea Chrome oferă nici o modalitate de a importa cert în magazin, așa că ar trebui să adăugați-le prin intermediul IE în loc.
Instalarea Certificate în Google Chrome
Instalarea Certificate în Internet Explorer
De asemenea, să ia o privire la acest lucru pentru câteva abordări diferite pentru crearea de auto-semnat cert (I'm presupunând că're folosind IIS ca te-ai't menționate).
M-am dus în jos procesul de utilizare ce bjnord sugerat care a fost: Google Chrome, Mac OS X și Certificate SSL Auto-Semnat
Ceea ce este prezentat în blog-ul nu au de lucru.
Cu toate acestea, unul din comentariile la blog-ul a fost de aur:
sudo de securitate add-încredere-cert -d -r trustRoot -k /Library/Brelocuri/Sistem.breloc site-ul.crt
Te'll trebuie să urmați blog-ul, cum să-l cert fișier, după care puteți folosi comanda de mai sus și ar trebui să fie bun pentru a merge.
GUI pentru gestionarea SSL cert pe Crom pe Linux NU au de lucru în mod corespunzător pentru mine. Cu toate acestea, lor docs dat răspunsul corect. Șmecheria era să rulați comanda de mai jos, care importă SSL auto-semnat cert. Doar actualiza numele de <certificat-porecla> " și " certificat-numele fisierului.cer
, apoi reporniți crom/crom.
Din Documente:
Pe Linux, Crom folosește NSS Comună DB. Dacă built-in manager nu funcționează pentru tine, atunci puteți configura certificate cu NSS instrumente de linie de comandă.
Obține instrumente
- Debian/Ubuntu:
sudo apt-get install libnss3-tools
- Fedora:
su -c "yum install nss-unelte"
- Gentoo:
su -c "echo 'dev-libs/nss utils' >> /etc/portage/pachet.utilizare && apar dev-libs/nss"
(Ai nevoie pentru a lansa toate comenzile de mai jos cu nss prefix, de exemplu,nsscertutil
.) Opensuse:sudo zypper instala mozilla-nss-tools
Să încredere într-un auto-semnat certificatul serverului, ar trebui să utilizați
certutil -d sql:$HOME/.pki/nssdb -O -t "P" -n <certificat-porecla> -am certificat-numele fisierului.cer
Lista toate certificatele
certutil -d sql:$HOME/.pki/nssdb -L
TRUSTARGS sunt trei șiruri de zero sau mai multe caractere alfabetice, separate prin virgule. Ele definesc modul în care certificatul ar trebui să fie de încredere pentru SSL, e-mail, și obiect semnarea, și sunt explicate în certutil docs sau Meena's blog post pe încredere steaguri.
se Adauga un personal certificat și cheie privată pentru autentificare client SSL Utilizați comanda:
pk12util -d sql:$HOME/.pki/nssdb -am PKCS12_file.p12
pentru a importa un certificat personal și cheia privată stocate într-un fișier PKCS #12. La TRUSTARGS de personal certificat va fi setat la "u,u,u".
a Șterge un certificat
certutil -d sql:$HOME/.pki/nssdb -D -n <certificat porecla>
Fragment Din: https://chromium.googlesource.com/chromium/src/+/CAP/docs/linux_cert_management.md
Atunci când faceți clic pe pic barat pictograma de blocare de lângă URL-ul, ai'll a obține o cutie de genul asta:
După ce faceți clic pe Certificat de informare link-ul, te'll vedea următorul dialog:
Aceasta vă spune care certificatul de magazin este cel corect, l's a Autorități de Certificare Rădăcină de Încredere magazin.
Puteți folosi oricare dintre metodele descrise în alte răspunsuri pentru a adăuga certificat de la magazin sau de a folosi:
certutil -addstore -user "ROOT" cert.pem
cert.pem
este numele de certificat auto-semnat.Acest post este deja inundat cu răspunsurile, dar am creat un script bash bazat pe unele dintre celelalte răspunsuri pentru a face mai ușor de a genera o auto-semnat certificat TLS valabil în Chrome (Testat în Chrome 65 de ani.x`). Sper's util pentru alții.
După ce instalați (și de încredere) certificatul, don't uitați să reporniți Chrome (chrome://restart
)
Un alt instrument în valoare de verificat este CloudFlare's `cfssl set de instrumente:
Ca de Chrome 58+ am început să primesc certificat de eroare pe macOS din lipsă de SAN. Aici este cum să obțineți verde de blocare de pe bara de adresă din nou.
openssl req \ -newkey rsa:2048 \ -x509 \ -noduri \ -keyout server.tasta \ -nou \ -server.crt \ -botezului /NC=.domeniu.dev \ -reqexts SAN \ -extensiile de SAN \ -config <(pisica /System/Library/OpenSSL/openssl.cnf \ <(printf '[SAN]\nsubjectAltName=DNS:.domeniu.dev')) \ -sha256 \ -720 zile
server.crt
în Breloc, apoi faceți dublu clic în certificat, extinde Încredere, și selectați Întotdeauna ÎncredereRefresh la pagina https://domain.dev în Google Chrome, astfel încât verde de blocare se întoarce.