Pertanyaan Mendapatkan Chrome untuk menerima sertifikat localhost yang ditandatangani sendiri


Saya telah membuat sertifikat SSL yang ditandatangani sendiri untuk CN localhost. Firefox menerima sertifikat ini setelah awalnya mengeluh tentang hal itu, seperti yang diharapkan. Chrome dan IE, bagaimanapun, menolak untuk menerimanya, bahkan setelah menambahkan sertifikat ke toko sertifikat sistem di bawah Root Tepercaya. Meskipun sertifikat terdaftar sebagai terpasang dengan benar saat saya mengeklik "Lihat informasi sertifikat" di munculan HTTPS Chrome, sertifikat tersebut masih menegaskan bahwa sertifikat tidak dapat dipercaya.

Apa yang harus saya lakukan agar Chrome menerima sertifikat dan berhenti mengeluh tentang itu?


795
2017-09-28 08:41


asal


Jawaban:


Ini berhasil untuk saya:

  1. Menggunakan Chrome, tekan halaman di server Anda melalui HTTPS dan terus melewati halaman peringatan merah (dengan asumsi Anda belum melakukannya).
  2. Buka Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Klik Authorities tab dan gulir ke bawah untuk menemukan sertifikat Anda di bawah Nama Organisasi yang Anda berikan ke sertifikat.
  4. Pilih itu, klik Edit (CATATAN: di Chrome versi terbaru, tombol sekarang "Lanjutan" alih-alih "Edit"), centang semua kotak dan klik OK. Anda mungkin harus memulai ulang Chrome.

Anda harus mendapatkan kunci hijau yang bagus di halaman Anda sekarang.

EDIT: Saya mencoba ini lagi pada mesin baru dan sertifikat tidak muncul di jendela Kelola Sertifikat hanya dengan melanjutkan dari halaman sertifikat tidak dipercaya merah. Saya harus melakukan hal-hal berikut:

  1. Di halaman dengan sertifikat yang tidak tepercaya (https:// dicoret merah), klik kunci> Informasi Sertifikat. CATATAN: pada versi Chrome yang lebih baru, Anda harus membuka Developer Tools > Security, dan pilih View certificate.
  2. Klik Details tab > Export. Memilih PKCS #7, single certificate sebagai format file.
  3. Kemudian ikuti instruksi asli saya untuk sampai ke halaman Kelola Sertifikat. Klik Authorities tab > Import dan pilih file yang Anda ekspor sertifikat, dan pastikan untuk memilih  PKCS #7, single certificate  sebagai jenis file.
  4. Jika diminta toko sertifikasi, pilih Otoritas Sertifikat Root Terpercaya
  5. Periksa semua kotak dan klik OK. Mulai ulang Chrome.

414
2018-02-25 21:14



BUKAN UNTUK PROD

Cukup tempelkan ini di chrome Anda:

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

Anda seharusnya melihat teks yang disorot mengatakan: Izinkan sertifikat yang tidak valid untuk sumber daya yang dimuat dari localhost

Klik Enable.


393
2017-08-09 01:52



Di Mac, Anda dapat menggunakan utilitas Akses Rantai Kunci untuk menambahkan sertifikat yang ditandatangani sendiri ke keychain Sistem, dan Chrome akan menerimanya. Saya menemukan petunjuk langkah demi langkah di sini:

Google Chrome, Mac OS X, dan Sertifikat SSL Bertanda Tangan Sendiri

Pada dasarnya:

  1. klik dua kali ikon kunci dengan X dan drag-and-drop ikon sertifikat ke desktop,
  2. buka file ini (diakhiri dengan ekstensi .cer); ini membuka aplikasi keychain yang memungkinkan Anda menyetujui sertifikat.

119
2017-10-31 15:56



PERBARUI UNTUK CHROME 58+ (RELEASED 2017-04-19)

Mulai dari Chrome 58, mengidentifikasi host hanya menggunakan commonName  sedang dihapus. Lihat lebih jauh diskusi di sini dan pelacak bug di sini. Di masa lalu, subjectAltName hanya digunakan untuk sertifikat multi-host sehingga beberapa alat CA internal mungkin tidak menyertakannya.

Jika sertifikat yang ditandatangani sendiri bekerja dengan baik di masa lalu tetapi tiba-tiba mulai menghasilkan kesalahan di Chrome 58, inilah alasannya.

Jadi, apa pun metode yang Anda gunakan untuk menghasilkan sertifikat yang ditandatangani sendiri (atau sertifikat yang ditandatangani oleh CA yang ditandatangani sendiri), pastikan bahwa sertifikat server mengandung subjectAltName dengan tepat DNS dan / atau IP entri / entri, meskipun hanya untuk satu host.

Untuk openssl, ini berarti konfigurasi Anda akan memiliki sesuatu yang mirip dengan yang berikut untuk satu host:

[v3_req]
subjectAltName = DNS:example.com

atau untuk beberapa host:

[v3_req]
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

Di penampil sertifikat Chrome (yang telah pindah ke tab "Keamanan" pada F12) Anda akan melihatnya tercantum di bawah Extensions sebagai Certificate Subject Alternative Name:

Chrome cert viewer


TEMPORARY WORKAROUND

Adalah mungkin untuk kembali ke yang lama commonName tingkah laku hingga Chrome 65, menggunakan pengaturan berikut: EnableCommonNameFallbackForLocalAnchors

Di Windows, ini dapat diatur pada satu PC menggunakan perintah registri berikut (terima kasih @Meengla):

reg add HKLM\Software\Policies\Google\Chrome /v EnableCommonNameFallbackForLocalAnchors /t REG_DWORD /d 1

Di Mac, perintah berikut dapat digunakan (terima kasih @BugsBunny):

defaults write com.google.Chrome EnableCommonNameFallbackForLocalAnchors -bool true

Di Linux, buat file kebijakan seperti /etc/opt/chrome/policies/managed/EnableCommonNameFallbackFor‌​LocalAnchors.json dengan isi: { "EnableCommonNameFallbackForLocalAnchors": true } (terima kasih @seanf)

Detail lebih lanjut tentang pengaturan kebijakan ini untuk berbagai platform, termasuk pengaturannya melalui Windows GPO, dapat ditemukan di bagian atas halaman yang ditautkan serta panduan template kebijakan Chromium dan Panduan administrator.


Sekali lagi, solusi ini sementara sampai versi 65!


98
2018-03-21 02:12



PEMBARUAN 11/2017: Jawaban ini mungkin tidak akan berfungsi untuk sebagian besar versi Chrome yang lebih baru.

UPDATE 02/2016: Instruksi Lebih Baik untuk Pengguna Mac Dapat Ditemukan Sini.

  1. Di situs yang ingin Anda tambahkan, klik kanan ikon kunci merah di bilah alamat:enter image description here

    1. Klik tab berlabel Koneksi, lalu klik Informasi Sertifikat

    2. Klik Detail tab, klik tombolnya Salin ke File .... Ini akan membuka Wisaya Ekspor Sertifikat, klik Berikutnya untuk sampai ke Ekspor Format File layar.

    3. Memilih DER berkode biner X.509 (.CER), klik Berikutnya

    4. Klik Jelajahi ... dan simpan file ke komputer Anda. Beri nama itu sesuatu yang deskriptif. Klik Berikutnya, lalu klik Selesai.

    5. Buka pengaturan Chrome, gulir ke bawah, dan klik Tampilkan pengaturan lanjutan...

    6. Dibawah HTTPS / SSL, klik Kelola sertifikat ...

    7. Klik Otoritas Sertifikasi Root Terpercaya tab, lalu klik Impor... tombol. Ini membuka Wisaya Impor Sertifikat. Klik Berikutnya untuk sampai ke File untuk Diimpor layar.

    8. Klik Jelajahi ... dan pilih file sertifikat yang Anda simpan sebelumnya, lalu klik Berikutnya.

    9. Memilih Tempatkan semua sertifikat di toko berikut. Toko yang dipilih seharusnya Otoritas Sertifikasi Root Terpercaya. Jika tidak, klik Jelajahi ...dan pilih itu. Klik Berikutnya dan Selesai

    10. Klik iya nih pada peringatan keamanan.

    11. Mulai ulang Chrome.


86
2017-09-03 22:56



Linux

Jika Anda menggunakan Linux, Anda juga dapat mengikuti halaman wiki resmi ini:

Pada dasarnya:

  • klik ikon kunci dengan X,
  • pilih Informasi Sertifikat
  • pergi ke tab Detail
  • Klik Ekspor ... (simpan sebagai file)

Sekarang, perintah berikut akan menambahkan sertifikat (di mana YOUR_FILE adalah file Anda yang diekspor):

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

Untuk mendaftarkan semua sertifikat Anda, jalankan perintah berikut:

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

Jika masih tidak berhasil, Anda mungkin terpengaruh oleh bug ini: Masalah 55050: Kesalahan SSL Ubuntu 8179

P.S. Harap pastikan juga bahwa Anda memilikinya libnss3-tools, sebelum Anda dapat menggunakan perintah di atas.

Jika Anda tidak memilikinya, silakan menginstalnya dengan:

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

Sebagai bonus, Anda dapat menggunakan skrip berguna berikut ini:

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

Pemakaian:

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

Penyelesaian masalah

  • Jalankan Chrome dengan --auto-ssl-client-auth parameter

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


82
2017-09-18 14:11



Klik di mana saja pada halaman dan ketik BYPASS_SEQUENCE

"thisisunsafe"adalah BYPASS_SEQUENCE untuk Chrome versi 65

"badidea"Versi Chrome 62 - 64.

"danger"dulu berfungsi di versi Chrome sebelumnya

Anda tidak perlu mencari bidang input, cukup ketikkan saja. Rasanya aneh tapi itu berhasil.

Saya mencobanya di Mac High Sierra.

Untuk memeriksa ulang apakah mereka mengubahnya lagi pergi ke Chromium terbaru Kode sumber 

Untuk mencari BYPASS_SEQUENCE, pada saat ini terlihat seperti itu:

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

Sekarang mereka memilikinya disamarkan, tetapi untuk melihat BYPASS_SEQUENCE yang sebenarnya Anda dapat menjalankan baris berikut di konsol browser.

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

65
2017-12-05 05:08



Jika kamu pada mac dan tidak melihat tab ekspor atau cara mendapatkan sertifikat ini berhasil untuk saya:

  1. Klik kunci sebelum https: //
  2. Buka tab "Sambungan"
  3. Klik "Informasi Sertifikat"

    Sekarang Anda harus melihat ini: Different information of course and yours should be marked as trusted yet (otherwise      you probably wouldn't be here)

  4. Seret ikon sertifikat kecil itu ke desktop Anda (atau di mana saja).

  5. Klik dua kali file .cer yang telah diunduh, ini harus mengimpornya ke keychain Anda dan membuka akses Keychain ke daftar sertifikat Anda.

    Dalam beberapa kasus, ini sudah cukup dan Anda sekarang dapat menyegarkan halaman.

    Jika tidak:

  6. Klik dua kali sertifikat yang baru ditambahkan.
  7. Di bawah kepercayaan drop down ubah opsi "Saat menggunakan sertifikat ini" menjadi "Selalu Dipercaya"

Sekarang muat ulang halaman yang dipermasalahkan dan seharusnya masalah terpecahkan! Semoga ini membantu.


Edit dari Wolph

Untuk membuat ini sedikit lebih mudah, Anda dapat menggunakan skrip berikut (sumber):

  1. Simpan yang berikut ini naskah sebagai 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. Buat skrip dieksekusi (dari shell):

    chmod +x whitelist_ssl_certificate.ssh
    
  3. Jalankan skrip untuk domain yang Anda inginkan (cukup salin / tempelkan seluruh url yang berfungsi):

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

55
2018-01-14 04:53