Mendapatkan Chrome untuk menerima sertifikat host lokal yang ditandatangani sendiri

1212

Saya telah membuat sertifikat SSL yang ditandatangani sendiri untuk CN hosthost. Firefox menerima sertifikat ini setelah awalnya mengeluhkannya, seperti yang diharapkan. Chrome dan IE, bagaimanapun, menolak untuk menerimanya, bahkan setelah menambahkan sertifikat ke penyimpanan sertifikat sistem di bawah Root Tepercaya. Meskipun sertifikat terdaftar sebagai yang dipasang dengan benar ketika saya mengklik "Lihat informasi sertifikat" di sembulan HTTPS Chrome, sertifikat itu tetap menegaskan bahwa sertifikat tersebut tidak dapat dipercaya.

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

pjohansson
sumber
14
Ketika Anda mengatakan Firefox mengeluh tentang hal itu pada awalnya, apakah maksud Anda ia meminta Anda untuk menambahkan pengecualian sertifikat? Ini seharusnya tidak terjadi jika sertifikat dipasang dengan benar. Kedengarannya bagi saya bahwa ketiga browser mengeluh, tetapi Firefox memungkinkan Anda untuk membatalkan keluhannya. Saya memposting ini sebagai komentar karena saya tidak memiliki jawaban spesifik, tetapi saya telah melakukan ini dan berfungsi dengan baik di ketiga browser. Saya menyarankan agar Anda mencoba dan membuatnya bekerja pada IE terlebih dahulu, dan kemudian setelah itu senang khawatir tentang dua lainnya. Maaf saya tidak bisa membantu lagi!
starskythehutch
1
Anda harus membuat sertifikat yang terbentuk dengan baik, termasuk cara nama DNS disajikan. OpenSSL tidak menyajikannya dengan cara yang memuaskan browser secara out-of-the-box. Lihat Bagaimana cara membuat sertifikat yang ditandatangani sendiri dengan openssl? .
jww
4
Firefox tidak menggunakan penyimpanan sertifikat sistem.
curiousguy
4
Jika tanda tangan sertifikat Anda menggunakan SHA-1, Chrome versi terbaru (sekitar 57) akan menampilkan peringatan bahkan jika Anda berhasil menambahkan sertifikat khusus Anda . Terlepas dari itu, "Security" panel alat pengembang akan mengatakan lebih khusus apa masalahnya misalnya: net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM.
SeldomNeedy
2
Saya baru saja berhenti menggunakan Chrome untuk tujuan pengembangan, karena itu tidak ramah pengembang. Biasanya orang yang akhirnya dalam situasi ini tahu apa yang mereka lakukan. Terima kasih, tapi tidak, terima kasih. Saya sudah cukup frustrasi dengan Chrome!
GTodorov

Jawaban:

66

2020-05-22 : Dengan hanya 6 perintah shell , Anda dapat melakukannya.

Tolong jangan mengubah pengaturan keamanan browser Anda.

Dengan kode berikut, Anda dapat (1) menjadi CA Anda sendiri, (2) kemudian menandatangani sertifikat SSL Anda sebagai CA. (3) Kemudian impor sertifikat CA (bukan sertifikat SSL, yang masuk ke server Anda) ke Chrome / Chromium. (Ya, ini bekerja bahkan di 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

Untuk rekap:

  1. Menjadi CA
  2. Tanda tangani sertifikat Anda menggunakan kunci CA Anda
  3. Impor myCA.pemsebagai Otoritas dalam pengaturan Chrome Anda (Pengaturan> Kelola sertifikat> Otoritas> Impor)
  4. Gunakan .crtfile di server Anda

Langkah ekstra (untuk Mac, setidaknya):

  1. Impor sertifikat CA di "File> Impor file", lalu temukan dalam daftar, klik kanan, buka "> Kepercayaan", dan pilih "Selalu"
  2. Tambahkan di extendedKeyUsage=serverAuth,clientAuthbawah basicConstraints=CA:FALSE, dan pastikan Anda mengatur "CommonName" sama seperti $NAMEketika meminta pengaturan

Anda dapat memeriksa pekerjaan Anda

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt
JellicleCat
sumber
2
@maverick browser dan sistem operasi dikirimkan dengan CA terbatas yang mereka percayai. Meskipun siapa pun dapat menjadi CA, untuk membuat siapa pun mempercayai sertifikat mereka, mereka membutuhkan orang untuk menambahkannya secara manual sebagai CA tepercaya (seperti yang kami minta Chrome lakukan ketika kami mengimpor sertifikat secara manual).
JellicleCat
2
Bagus! Dua komentar untuk pengguna Mac seperti saya: Di baris terakhir, gunakan -days 825alih-alih -days 1825karena superuser.com/questions/1492643/… , dan perlu dicatat bahwa untuk mengimpor sertifikat root ke Akses Rantai Kunci, Anda tidak perlu hanya "File > Impor file ", tetapi kemudian juga untuk menemukannya dalam daftar, klik kanan itu, perluas"> Percaya ", dan pilih" Selalu ".
michielbdejong
2
jika Anda memerlukan file PEM alih-alih file CRT untuk server dev lokal Anda, jangan khawatir, cukup gabungkan file .crt dan .csr dan simpan sebagai file .pem , dan Anda siap melakukannya.
Kerem Baydoğan
1
SAAT INI BEKERJA! BRAVO untuk jawaban ini. Jangan lupa memuat myCA.pem ke Chrome atau Firefox Anda (Pengaturan> Kelola sertifikat> Otoritas> Impor)
Fryser wow
3
Saya mengubah DNS.1 ke IP.1 untuk server LAN berbasis IP saya. Berhasil. Terima kasih.
DW1
766

Hanya untuk localhost:

Cukup tempel ini di chrome Anda:

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

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

Klik Enable.

Chris
sumber
3
Menonaktifkan peringatan ... tetapi juga cache! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood
4
ini tidak akan berfungsi jika Anda menggunakan chrome dalam mode Penyamaran (untuk mengganti identitas misalnya) tetapi sangat bersih
baywet
5
Ini - jika Anda tahan dengan pesan merah Tidak Aman yang mengganggu. Kalau tidak, itu jam mantra openssl misterius kemudian mencoba untuk berurusan dengan manajer sertifikasi internal di Chrome.
timbo
10
Saya tidak tahu mengapa jawaban ini dipilih tetapi ada perbedaan antara sertifikat tidak valid dan sertifikat yang ditandatangani sendiri. Pertanyaannya adalah tentang sertifikat yang ditandatangani sendiri.
Mehdi
2
Sama sekali tidak bekerja untuk saya. Apa yang berhasil bagi saya adalah membuat sertifikat yang ditandatangani sendiri termasuk subjectAltName, seperti yang dijelaskan oleh jawaban ini: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew
507

Ini bekerja untuk saya:

  1. Menggunakan Chrome, tekan halaman di server Anda melalui HTTPS dan lanjutkan melewati halaman peringatan merah (dengan asumsi Anda belum melakukan ini).
  2. Buka Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Klik Authoritiestab 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, tombolnya sekarang "Advanced", bukan "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 merah yang tidak dipercaya. Saya harus melakukan hal berikut:

  1. Pada halaman dengan sertifikat yang tidak dipercaya ( https://dicoret merah), klik kunci> Informasi Sertifikat. CATATAN: pada versi chrome yang lebih baru, Anda harus membuka Developer Tools > Security, dan memilih View certificate.
  2. Klik tautan Details tab > Export. Pilih PKCS #7, single certificatesebagai format file.
  3. Kemudian ikuti instruksi asli saya untuk sampai ke halaman Kelola Sertifikat. Klik Authorities tab > Importdan 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 Tepercaya
  5. Centang semua kotak dan klik OK. Mulai ulang Chrome.
Kellen
sumber
143
Saya mencoba ini pada mesin Linux, tetapi katanya impor gagal karena xxx.xxx.com: Bukan Otoritas Sertifikasi.
matt
15
Terima kasih @kellen .. namun, Menggunakan Chrome Versi 29.0.1547.57 beta, tampaknya tidak ada opsi "Ekspor" di mana saja pada Informasi Sertifikat. Yang mengatakan, ada "Details" bagian tapi tidak dalam bentuk Tab. Itu muncul sebagai blok dilipat / diperluas. i.imgur.com/dDmNEIh.png
iring
20
Di Chrome 37, tidak ada Exportlagi tombol deskriptif yang berguna , ini sepertinya telah diganti dengan Copy to filetombol yang bagus . Mengapa 'ekspor' tidak disimpan, pikiran hanya mengejutkan
kolin
13
@ Jakobud, cukup seret simbol sertifikat ke desktop atau sesuatu dan diekspor. Namun, sisa jawaban tidak berfungsi pada OS X (Yosemite) sejauh yang saya tahu (Chrome 39).
db
33
Pada Chrome 56, untuk mengakses pengaturan sertifikat SSL di Windows Anda harus menggunakan Alat Pengembang (CTRL + SHIFT + i), buka tab "Keamanan" dan klik tombol "Lihat Sertifikat".
void.pointer
167

PEMBARUAN UNTUK CHROME 58+ (DIREKSI 2017-04-19)

Pada Chrome 58, kemampuan untuk mengidentifikasi host menggunakan hanya commonName dihapus . Sertifikat sekarang harus digunakan subjectAltNameuntuk mengidentifikasi host mereka. Lihat diskusi lebih lanjut di sini dan pelacak bug di sini . Di masa lalu, subjectAltNamehanya digunakan untuk sertifikat multi-host sehingga beberapa alat CA internal tidak memasukkannya.

Jika sertifikat yang Anda tandatangani sendiri berfungsi dengan baik di masa lalu tetapi tiba-tiba mulai menghasilkan kesalahan di Chrome 58, inilah sebabnya.

Jadi, apa pun metode yang Anda gunakan untuk membuat sertifikat yang ditandatangani sendiri (atau sertifikat yang ditandatangani oleh CA yang ditandatangani sendiri), pastikan bahwa sertifikat server berisi subjectAltName dengan entri yang benar DNSdan / atau IPentri / entri, meskipun itu hanya untuk satu host .

Untuk openssl, ini artinya konfigurasi OpenSSL Anda ( /etc/ssl/openssl.cnfdi Ubuntu) harus memiliki sesuatu yang mirip dengan yang berikut ini untuk satu host:

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

atau untuk beberapa host:

[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

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

Penampil sertifikat Chrome

Tobias J
sumber
12
Terima kasih telah memposting tentang pembaruan Chrome 58+! Bagi orang yang ingin membuat sertifikat yang ditandatangani sendiri yang menyertakan SAN di Windows, salah satu cara mudah adalah dengan menggunakan commandlet PowerShell New-SelfSignedCertificate. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO
3
@DANO TERIMA KASIH! Tidak ada solusi lain yang bekerja untuk saya di Win10. Senang mengetahui setidaknya Powershell menghasilkan sertifikat yang valid!
Brian Donahue
1
Temukan solusi di Reddit untuk Chrome 58+ dan berhasil! Pada command prompt Admin: reg tambahkan HKLM \ Software \ Kebijakan \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson
3
Untuk membuat kebijakan di Linux, Anda perlu membuat file kebijakan, katakan /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsondengan konten ini: { "EnableCommonNameFallbackForLocalAnchors": true }
seanf
5
"Di penampil sertifikat Chrome (yang telah pindah ke tab" Keamanan "di bawah F12) Anda akan melihatnya terdaftar di bawah Extensionssebagai Certificate Subject Alternative Name". Saya tidak melihat bagian "Ekstensi" ketika saya membuka tab Keamanan di alat dev F12 (Chrome 62). Apakah sudah dipindahkan ke tempat lain?
Thunderforge
143

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

Google Chrome, Mac OS X dan Sertifikat SSL yang Ditandatangani Sendiri

Pada dasarnya:

  1. klik dua kali ikon kunci dengan X dan seret-dan-jatuhkan ikon sertifikat ke desktop,
  2. buka file ini (diakhiri dengan ekstensi .cer); ini membuka aplikasi gantungan kunci yang memungkinkan Anda untuk menyetujui sertifikat.
bjnord
sumber
12
Yang penting, Anda mungkin harus memulai ulang Chrome agar ini berlaku.
Xiong Chiamiov
10
Saya harus mengedit preferensi sertifikat dan memungkinkan untuk mempercayai SSL secara manual
NeDark
1
Ini bekerja untuk saya di Yosemite, 10.10.5, Versi Chrome 46.0.2490.80 (64-bit). Terima kasih!
romellem
2
Bekerja pada El Capitan, tidak perlu memulai ulang. Saya menambahkan sertifikat, mengkliknya, memperluas dropdown Trust dan mengaturnya Always Trustuntuk bagian SSL. Pada dasarnya apa yang dikatakan @NeDark.
Tom
1
Saya perlu menyeret-dan-menjatuhkan sertifikat dari desktop ke Keychain, dan kemudian melakukan persetujuan.
jmq
130

Klik di mana saja di halaman dan ketik BYPASS_SEQUENCE

" thisisunsafe" adalah BYPASS_SEQUENCE untuk Chrome versi 65

" badidea" Chrome versi 62 - 64.

" danger" dulu berfungsi di versi Chrome sebelumnya

Anda tidak perlu mencari kolom input, cukup ketik. Rasanya aneh tapi berhasil.

Saya mencobanya di Mac High Sierra.

Untuk mengecek apakah mereka mengubahnya lagi, buka Kode Sumber kromium terbaru

Untuk mencari BYPASS_SEQUENCE, saat ini terlihat seperti itu:

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

Sekarang mereka menyamarkannya, tetapi untuk melihat BYPASS_SEQUENCE yang asli, Anda dapat menjalankan baris berikut di konsol browser.

console.log(window.atob('dGhpc2lzdW5zYWZl'));
Yevgeniy Afanasyev
sumber
6
wtf, terima kasih ini bekerja untuk saya ubuntu 16.04 63.0.3239.84
gries
8
Kode ini telah diubah sejak versi baru. Ungkapan baru adalahthisisunsafe
The Java Guy
6
Di Chrome 65 pada Windows 10, pengetikan thisisunsafetampaknya hanya memiliki pengaruh untuk menambahkan situs ini ke pengecualian. (Bilah alamat masih mengatakan "Tidak aman" dengan warna merah.)
Ryan
2
ini berfungsi tetapi hanya untuk memuat pertama, jika Anda menavigasi halaman Anda harus mengetik lagi bupass_squence
talsibony
"thisisunsafe" BYPASS_SEQUENCE adalah satu-satunya hal dari halaman ini yang bekerja untuk saya di Mac Chrome 72. Saya merasa tidak perlu repot-repot membuat sertifikat yang ditandatangani sendiri ...!
Jono
95

Linux

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

Pada dasarnya:

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

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

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

Untuk mendaftar semua sertifikat Anda, jalankan perintah berikut:

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

Jika masih tidak berfungsi, Anda dapat dipengaruhi oleh bug ini: Masalah 55050: Ubuntu SSL error 8179

PS Tolong pastikan juga sudah libnss3-tools , sebelum dapat menggunakan perintah di atas.

Jika Anda belum memilikinya, silakan instal 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 praktis berikut:

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

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

kenorb
sumber
Luar biasa, saya suka skrip Anda. Anda tidak perlu QUIT (tidak ada perintah HTTP seperti QUIT), dan Anda tidak perlu sed juga, alat nss dapat menyaring cert antara BEGIN dan END CERT. Jadi download_cert.shbisa sederhana ini:echo | openssl s_client -connect $1:443
Paul Tobias
Saya telah mencoba opsi lain tetapi hanya yang ini saat ini berfungsi di Chrome 4x untuk linux, ia menolak untuk mengimpor ke toko mana pun menggunakan alat bawaan.
Kendrick
93

Di Mac, Anda dapat membuat sertifikat yang sepenuhnya dipercaya oleh Chrome dan Safari di tingkat sistem dengan melakukan hal berikut:

    # 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

Di atas menggunakan skrip berikut, dan file pendukung v3.ext, untuk menghindari kesalahan nama alternatif subjek hilang

Jika Anda ingin membuat sertifikat yang ditandatangani sendiri yang sepenuhnya tepercaya menggunakan otoritas root Anda sendiri, Anda dapat melakukannya menggunakan skrip ini.

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

Satu langkah lagi - Cara membuat sertifikat yang ditandatangani sendiri dipercaya sepenuhnya di Chrome / Safari

Untuk memungkinkan sertifikat yang ditandatangani sendiri untuk dipercaya sepenuhnya di Chrome dan Safari, Anda perlu mengimpor otoritas sertifikat baru ke Mac Anda. Untuk melakukannya ikuti instruksi ini, atau instruksi yang lebih rinci tentang proses umum ini di situs web mitmproxy :

Anda dapat melakukan ini dengan 2 cara, di baris perintah, menggunakan perintah ini yang akan meminta kata sandi Anda:

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

atau dengan menggunakan Keychain Accessaplikasi:

  1. Buka Akses Keychain
  2. Pilih "Sistem" di daftar "Gantungan Kunci"
  3. Pilih "Sertifikat" di daftar "Kategori"
  4. Pilih "File | Impor Item ..."
  5. Jelajahi file yang dibuat di atas, "rootCA.pem", pilih, dan klik "Open"
  6. Pilih sertifikat Anda yang baru diimpor dalam daftar "Sertifikat".
  7. Klik tombol "i", atau klik kanan pada sertifikat Anda, dan pilih "Dapatkan Info"
  8. Perluas opsi "Percaya"
  9. Ubah "Saat menggunakan sertifikat ini" ke "Selalu Percaya"
  10. Tutup dialog, dan Anda akan dimintai kata sandi.
  11. Tutup dan buka kembali tab yang menggunakan domain target Anda, dan itu akan dimuat dengan aman!

dan sebagai bonus, jika Anda membutuhkan klien java untuk mempercayai sertifikat, Anda dapat melakukannya dengan mengimpor sertifikat Anda ke java keystore. Catatan ini akan menghapus sertifikat dari keystore jika sudah ada, karena perlu memperbarui jika terjadi perubahan. Tentu saja ini hanya untuk sertifikat yang diimpor.

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
Taman Brad
sumber
Mendapat "Kesalahan saat membuka Private Key rootCA.key" saat berjalan $ ./create_root_cert_and_key.sh. macOS 10.12.4 dan OpenSSL 0.9.8zh 14 Jan 2016.
donat
1
Berjalan $ openssl genrsa -out rootCA.key 2048sebelum $ ./create_root_cert_and_key.shmemperbaiki kesalahan "Kesalahan membuka kunci pribadi rootCA.key" saya mengalami.
donat
@donut - terima kasih untuk menunjukkan ini - saya membuat duplikatnya jadi saya yakin itu menyebabkan masalah yang Anda lihat ...
Brad Parks
openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrmemberi saya kesalahan "Kesalahan membuka kunci perangkat PRIVATE.key" Saya pikir perintah ini seharusnya dibuat device.key, tetapi tampaknya mencoba untuk membacanya karena alasan tertentu
Lenny
2
Mencari solusinya (kalau-kalau ada orang lain yang hits ini) adalah mengubah -keyke -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny
90

UPDATE 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 Di Sini .

  1. Di situs yang ingin Anda tambahkan, klik kanan ikon kunci merah di bilah alamat:masukkan deskripsi gambar di sini

    1. Klik tab berlabel Koneksi , lalu klik Informasi Sertifikat

    2. Klik Rincian tab, klik tombol Copy untuk File ... . Ini akan membuka Wisaya Ekspor Sertifikat, klik Berikutnya untuk mendapatkan layar Format Ekspor File .

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

    4. Klik Browse ... dan simpan file ke komputer Anda. Sebutkan sesuatu yang deskriptif. Klik Berikutnya , lalu klik Selesai .

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

    6. Di bawah HTTPS / SSL , klik Kelola sertifikat ...

    7. Klik Akar Sertifikasi Otoritas Terpercaya tab, lalu klik Impor ... tombol. Ini membuka Wisaya Impor Sertifikat. Klik Next untuk sampai ke layar File to Import .

    8. Klik Browse ... dan pilih file sertifikat yang Anda simpan sebelumnya, lalu klik Next .

    9. Pilih Tempatkan semua sertifikat di toko berikut . Toko yang dipilih haruslah Otoritas Sertifikasi Root Tepercaya . Jika tidak, klik Browse ... dan pilih. Klik Berikutnya dan Selesai

    10. Klik Ya pada peringatan keamanan.

    11. Mulai ulang Chrome.

kmgdev
sumber
2
@ AJeneral Ya, Chrome berubah lagi. Instruksi dalam artikel ini bekerja untuk saya baru-baru ini.
kmgdev
2
Opsi ini tidak ada di Mac Chrome terbaru pada tanggal komentar ini.
y3sh
1
@kgrote, Chrome tidak memiliki toko sertifikat sendiri. Yang dilakukannya hanyalah menambah dan menghapus Windows. Dengan demikian, cara yang lebih baik adalah dengan hanya menggunakan certmgr.mscuntuk menambah dan menghapus sertifikat.
Pacerier
1
Berhasil bagi saya, terima kasih. Harus memulai ulang Chrome dan yang paling penting sertifikat saya harus kedaluwarsa sebelum 2017. Barang-barang SHA-1.
ioanb7
1
CHROME CHANGED YA LAGI! Sekarang langkah "Di bilah alamat, klik kunci kecil dengan X. Ini akan memunculkan layar informasi kecil." tidak bekerja
Bruno Bronosky
59

Jika Anda menggunakan mac dan tidak melihat tab ekspor atau cara mendapatkan sertifikat ini berfungsi untuk saya:

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

    Sekarang Anda akan melihat ini: Informasi yang berbeda tentu saja dan milik Anda harus ditandai sebagai tepercaya (jika tidak, Anda mungkin tidak akan ada di sini)

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

  5. Klik dua kali file .cer yang telah diunduh, ini akan mengimpornya ke gantungan kunci 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 trust drop down, ubah opsi "Saat menggunakan sertifikat ini" ke "Selalu Percaya"

Sekarang muat ulang halaman yang dimaksud dan itu harusnya diselesaikan! Semoga ini membantu.


Edit dari Wolph

Untuk membuatnya lebih mudah, Anda dapat menggunakan skrip ( sumber ) berikut:

  1. Simpan skrip berikut sebagaiwhitelist_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. Jadikan skrip dapat dieksekusi (dari shell):

    chmod +x whitelist_ssl_certificate.ssh
  3. Jalankan skrip untuk domain yang Anda inginkan (cukup salin / tempel karya url lengkap):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
LunaCodeGirl
sumber
1
Pendekatan ini bekerja untuk saya di OS X Mavericks, tidak ada opsi Ekspor yang tersedia seperti yang dijelaskan dalam jawaban teratas di atas.
Kevin Leary
Bagus sekali. Kunci sebelum https masih dicoret, tetapi tidak apa-apa karena tidak ada sembulan yang mengganggu lagi.
nalply
Ini bekerja untuk saya di Mac Catalina. Terima kasih! :)
Saurabh
58

DIPERBARUI 23 Apr20

Direkomendasikan oleh Tim Chromium

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

Solusi Cepat Super-Mudah

Ada frasa pintasan rahasia yang dapat diketik ke halaman kesalahan agar Chrome melanjutkan meskipun ada kesalahan keamanan: ini tidak aman (dalam versi Chrome yang lebih lama, ketik badidea , dan bahkan sebelumnya, bahaya ). DO NOT USE INI KECUALI ANDA MENGERTI PERSIS MENGAPA ANDA PERLU IT!

Sumber:

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

(CATATAN yang window.atob('dGhpc2lzdW5zYWZl')memutuskan untukthisisunsafe )

Versi terbaru dari sumber adalah @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js danwindow.atob fungsinya dapat dijalankan di konsol JS.

Untuk latar belakang tentang mengapa tim Chrome mengubah frasa pintasan (pertama kali):

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

Jika semuanya gagal (Solusi # 1)

Untuk sekali saja cepat jika opsi "Lanjutkan Saja" tidak tersedia, atau frasa pintasan tidak berfungsi, peretasan ini berfungsi dengan baik:

  1. Izinkan kesalahan sertifikat dari localhostdengan mengaktifkan tanda ini (perhatikan Chrome perlu memulai ulang setelah mengubah nilai tanda):

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

    (dan pilih jawaban https://stackoverflow.com/a/31900210/430128 oleh @Chris)

  2. Jika situs yang ingin Anda hubungkan adalah localhost, Anda selesai. Jika tidak, siapkan terowongan TCP untuk mendengarkan pada port 8090 secara lokal dan sambungkan ke broken-remote-site.compada port 443, pastikan Anda telah socatmenginstal dan menjalankan sesuatu seperti ini di jendela terminal:

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

  3. Pergi ke https: // localhost: 8090 di browser Anda.

Jika semuanya gagal (Solusi # 2)

Mirip dengan "Jika semuanya gagal (Solusi # 1)", di sini kami mengonfigurasi proxy ke layanan lokal kami menggunakan ngrok . Karena Anda dapat mengakses terowongan ngrok http melalui TLS (dalam hal ini diakhiri oleh ngrok dengan sertifikat yang valid), atau melalui titik akhir non-TLS, browser tidak akan mengeluh tentang sertifikat yang tidak valid.

Unduh dan instal ngrok lalu paparkan melalui ngrok.io:

ngrok http https://localhost

ngrok akan memulai dan memberi Anda nama host yang dapat Anda sambungkan, dan semua permintaan akan dikirim kembali ke mesin lokal Anda.

Raman
sumber
10
Sebagaimana dinyatakan pada quora.com/... , opsi lain adalah mengklik di mana saja pada halaman dan menulis "badidea"
smihael
Siapa pun yang mencoba menggunakan localhost dengan https untuk pekerja layanan, poin pertama If-all-gagal bekerja untuk saya di chrome 60 ubuntu 14.04
formatkaka
ini masih akan memperlakukan sertifikat sebagai tidak valid dan membuat kata sandi mengelola menolak untuk bekerja
Ray Foss
34

Untuk lingkungan pengujian

Anda dapat menggunakan --ignore-certificate-errorssebagai parameter baris perintah saat meluncurkan chrome (Bekerja pada Versi 28.0.1500.52 di Ubuntu).

Ini akan menyebabkannya mengabaikan kesalahan dan terhubung tanpa peringatan. Jika Anda sudah memiliki versi chrome yang berjalan, Anda harus menutup ini sebelum meluncurkan kembali dari baris perintah atau itu akan membuka jendela baru tetapi mengabaikan parameter.

Saya mengonfigurasi Intellij untuk meluncurkan chrome dengan cara ini saat melakukan debugging, karena server pengujian tidak pernah memiliki sertifikat yang valid.

Saya tidak akan merekomendasikan penjelajahan normal seperti ini, karena pemeriksaan sertifikat merupakan fitur keamanan yang penting, tetapi ini mungkin bermanfaat bagi sebagian orang.

Kieran Moore
sumber
5
Ini bekerja untuk saya di Windows 8! Saya cukup mengklik kanan pada pintasan chrome> Properties> Bidang 'Target' yang berubah seperti ini (perhatikan bahwa '--ignore-sertifikat-kesalahan' harus ditambahkan setelah penawaran, dan dengan spasi): "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-sertifikat-kesalahan
mikhail-t
1
Ini tidak menjawab pertanyaan, dan itu berbahaya. Pertanyaannya adalah bagaimana membuat Chrome mempercayai sertifikat server yang ditandatangani sendiri; bukan bagaimana mengabaikan peringatan dan kesalahan.
jww
1
Ini adalah satu-satunya solusi yang bekerja untuk saya di Chrome (63.0.3239.108) dengan Windows 7 (64-bit). Berkenaan dengan keamanan saya membuat ikon khusus pada desktop yang hanya saya luncurkan ketika mengembangkan pada mesin virtual lokal. Mengimpor sertifikat lokal yang ditandatangani sendiri, tuning chrome: // flags & domain HSTS tidak membantu. Chrome pastinya akan menyimpan tombol lama yang bagus "Tambahkan pengecualian keamanan" - itu akan menyelamatkan saya 2 jam dari kesulitan dengan pengaturan yang tidak berguna.
lubosdz
Tutorial ini bekerja seperti pesona! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins
20

Seperti yang telah dicatat oleh seseorang, Anda harus memulai kembali SEMUA Chrome, bukan hanya jendela peramban. Cara tercepat untuk melakukan ini adalah membuka tab untuk ...

chrome://restart

DejerNet
sumber
Hei! Hanya ingin menunjukkan bahwa inilah yang diperbaiki untuk saya. Saya menambahkan CA kustom ke toko kepercayaan, itu selalu bekerja untuk saya seperti itu. Saya mencoba Firefox dan bekerja dengan sempurna tetapi tidak chrome. Pada akhirnya itu karena Anda perlu me-restart sepenuhnya chrome seperti yang Anda sebutkan. Mungkin Chrome terus menggunakan trust store yang sama selama proses latar belakang itu masih berjalan.
Jose Cifuentes
20

WINDOWS JUN / 2017 Windows Server 2012

Saya mengikuti jawaban @Brad Parks. Pada Windows Anda harus mengimpor rootCA.pem di toko Otoritas Sertifikat Akar Tepercaya.

Saya melakukan langkah-langkah berikut:

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

Di mana v3.ext adalah:

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

Kemudian, dalam kasus saya, saya memiliki aplikasi web yang di-host sendiri, jadi saya harus mengikat sertifikat dengan alamat IP dan port, sertifikat harus di toko MY dengan informasi kunci pribadi, jadi saya diekspor ke format pfx.

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

Dengan konsol mmc (File / Tambah atau Hapus Snap-in / Sertifikat / Tambah / Akun Computert / LocalComputer / OK) saya mengimpor file pfx di Personal store.

Kemudian saya menggunakan perintah ini untuk mengikat sertifikat (Anda juga bisa menggunakan alat HttpConfig):

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

certhash = Sertifikat Thumprint

appid = GUID (pilihan Anda)

Pertama saya mencoba mengimpor sertifikat "device.crt" pada Otoritas Sertifikat Akar Tepercaya dengan cara yang berbeda tetapi saya masih mendapatkan kesalahan yang sama:

masukkan deskripsi gambar di sini

Tetapi saya menyadari bahwa saya harus mengimpor sertifikat otoritas root, bukan sertifikat untuk domain. Jadi saya menggunakan konsol mmc (File / Tambah atau Hapus Snap-in / Sertifikat / Tambah / Akun Computert / LocalComputer / OK) saya mengimpor rootCA.pem di toko Otoritas Sertifikat Akar Tepercaya.

masukkan deskripsi gambar di sini

Mulai ulang Chrome dan lakukan lagi.

Dengan localhost:

masukkan deskripsi gambar di sini

Atau dengan alamat IP:

masukkan deskripsi gambar di sini

Satu-satunya hal yang tidak dapat saya capai adalah, cipher usang (kotak merah pada gambar). Bantuan dihargai pada titik ini.

Dengan makecert tidak mungkin menambahkan informasi SAN. Dengan New-SelfSignedCertificate (Powershell) Anda dapat menambahkan informasi SAN, itu juga berfungsi.

UUHHIVS
sumber
2
Penting: Jalankan OpenSSL sebagai administrator.
Jose A
Ini adalah jawaban terbaik dan masih berfungsi untuk Chrome [71.0.3578.98] pada Jan-2019
ShadeBlack
Wow berhasil, terima kasih banyak (di Chrome 75 - Juli 2019). Anda tidak perlu netsh httplangkah kecuali Anda menggunakan windows server. Juga saya tidak berpikir itu perlu untuk mengekspor file cert ke pfx.
dikonfirmasi berfungsi: Chrome 81 - Mei 2020 - Windows 7
petrosmm
15
  1. Tambahkan sertifikat CA di root CA Store yang tepercaya.

  2. Buka chrome dan aktifkan bendera ini!

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

Akhirnya, cukup gunakan domain * .me atau domain yang valid seperti * .com dan * .net dan pertahankan di file host. Untuk pengembang lokal saya, saya menggunakan * .me atau * .com dengan file host dipertahankan sebagai berikut:

  1. Tambahkan ke host. C: / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

Catatan: Jika browser sudah dibuka saat melakukan ini, kesalahan akan terus muncul. Jadi, silakan tutup browser dan mulai lagi. Lebih baik lagi, pergi penyamaran atau memulai sesi baru untuk efek langsung.

Ariel
sumber
Ini tampaknya sama dengan jawaban terpilih .
Michael - Di mana Clay Shirky
Saya hanya menambahkan nama domain yang diizinkan dalam pengembangan lokal yaitu situs * .me ke file host di Windows. Orang-orang menambahkan sertifikat tetapi kadang-kadang tuan rumah gagal memverifikasi verifikasi SSL bahkan jika sertifikat diinstal dengan benar. Dalam hal ini, kami membuat sesi baru. Saya hanya menambahkan tips itu. Saya telah melewati lubang kelinci ini terlalu dalam sehingga saya ingin memastikan seseorang tahu apa yang harus dilakukan jika diperlukan.
Ariel
14

Apakah Anda yakin alamat situs yang dilayani sama dengan sertifikat? Saya memiliki masalah yang sama dengan Chrome dan sertifikat yang ditandatangani sendiri, tetapi pada akhirnya saya merasa sangat pilih-pilih tentang validasi nama domain pada sertifikat (sebagaimana mestinya).

Chrome tidak memiliki toko cert sendiri dan menggunakan milik Window. Namun Chrome tidak memberikan cara untuk mengimpor sertifikat ke toko sehingga Anda harus menambahkannya melalui IE.

Menginstal Sertifikat di Google Chrome

Menginstal Sertifikat di Internet Explorer

Lihat juga ini untuk beberapa pendekatan berbeda untuk membuat sertifikat yang ditandatangani sendiri (saya berasumsi Anda menggunakan IIS seperti yang belum Anda sebutkan).

Cara Membuat Sertifikat yang Ditandatangani Sendiri di IIS 7

Ira Rainey
sumber
Situs yang dimaksud adalah localhost , dan CN sertifikatnya adalah "localhost". Ya, saya menginstal sertifikat di toko sertifikat Windows. Baik IE dan Chrome mengeluh tentang sertifikat.
pjohansson
Tidak yakin apakah Anda menggunakan IIS atau Apache, tetapi periksa tautan tambahan yang baru saja saya tambahkan untuk membuat sertifikat yang ditandatangani sendiri untuk IIS.
Ira Rainey
Karena sangat pemilih tentang validasi nama domain pada bagian cert : apakah ada yang tahu lebih banyak tentang itu? Saya punya masalah (ini 2019) di Android 9 dengan sertifikat root, yang disalahkan sebagai tidak aman oleh Google Chrome. Tidak apa-apa untuk FF dan di desktop.
BairDev
7

Saya melanjutkan proses menggunakan apa yang disarankan oleh bjnord yaitu: Google Chrome, Mac OS X dan Sertifikat SSL yang Ditandatangani Sendiri

Apa yang ditampilkan di blog tidak berfungsi.

Namun, salah satu komentar di blog adalah emas:

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

Anda harus mengikuti blog tentang cara mendapatkan file cert, setelah itu Anda dapat menggunakan perintah di atas dan harus baik untuk melanjutkan.

James Oravec
sumber
7

GUI untuk mengelola sertifikat SSL pada Chromium di Linux TIDAK berfungsi dengan baik untuk saya. Namun, dokumen mereka memberikan jawaban yang benar. Caranya adalah dengan menjalankan perintah di bawah ini yang mengimpor sertifikat SSL yang ditandatangani sendiri. Cukup perbarui nama <certificate-nickname>dancertificate-filename.cer , lalu mulai ulang chromium / chrome.

Dari Documents:

Di Linux, Chromium menggunakan DB Bersama NSS. Jika manajer bawaan tidak bekerja untuk Anda, maka Anda dapat mengonfigurasi sertifikat dengan alat baris perintah NSS.

Dapatkan alatnya

  • 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"(Anda harus menjalankan semua perintah di bawah ini dengan nssawalan, misalnya nsscertutil,.) Opensuse:sudo zypper install mozilla-nss-tools

Untuk mempercayai sertifikat server yang ditandatangani sendiri, kita harus menggunakan

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

Daftar semua sertifikat

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

TRUSTARGS adalah tiga string karakter alfabet nol atau lebih, dipisahkan dengan koma. Mereka menentukan bagaimana sertifikat harus dipercaya untuk SSL, email, dan penandatanganan objek, dan dijelaskan dalam dokumen certutil atau posting blog Meena pada bendera kepercayaan.

Menambahkan sertifikat pribadi dan kunci pribadi untuk otentikasi klien SSL Gunakan perintah:

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

untuk mengimpor sertifikat pribadi dan kunci pribadi yang disimpan dalam file PKCS # 12. TRUSTARGS dari sertifikat pribadi akan ditetapkan ke "u, u, u".

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

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

TetraDev
sumber
7

Filippo Valsorda menulis alat lintas platform mkcert,, untuk melakukan ini untuk banyak toko kepercayaan. Saya kira dia menulisnya untuk alasan yang sama bahwa ada begitu banyak jawaban untuk pertanyaan ini: itu adalah rasa sakit untuk melakukan hal yang "benar" untuk sertifikat SubjectAltName yang ditandatangani oleh CA root terpercaya.

mkcert termasuk dalam sistem manajemen paket utama untuk Windows, macOS, dan beberapa rasa Linux.

mkcert

mkcertadalah alat sederhana untuk membuat sertifikat pengembangan yang tepercaya secara lokal. Tidak memerlukan konfigurasi.

$ 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 - Dimana Clay Shirky
sumber
6

Saat mengklik ikon kunci dicoret kecil di sebelah URL, Anda akan melihat kotak seperti ini:

masukkan deskripsi gambar di sini

Setelah mengklik tautan Informasi sertifikat , Anda akan melihat dialog berikut:

masukkan deskripsi gambar di sini

Ini memberi tahu Anda toko sertifikat mana yang benar, itu toko Otoritas Sertifikasi Root Tepercaya .

Anda bisa menggunakan salah satu metode yang dijabarkan dalam jawaban lain untuk menambahkan sertifikat ke toko itu atau menggunakan:

certutil -addstore -user "ROOT" cert.pem
  • ROOT adalah nama internal toko sertifikat yang disebutkan sebelumnya.
  • cert.pem adalah nama sertifikat yang Anda tandatangani sendiri.
Der Hochstapler
sumber
1
certutil -addstore -user "ROOT" cert.pemApakah Windows?
Pacerier
1
@Pacerier: Benar, ini untuk Windows.
Der Hochstapler
Anda harus memilikinya Trusted Root Certification Authoritiestetapi masih ada masalah: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, chrome 78
mencobaHard
6

Ini berhasil untuk saya. Lihat: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

Di bilah alamat, klik kunci kecil dengan X. Ini akan memunculkan layar informasi kecil. Klik tombol yang mengatakan "Informasi Sertifikat."

Klik dan seret gambar ke desktop Anda. Sepertinya sertifikat kecil.

Klik dua kali. Ini akan memunculkan utilitas Keychain Access. Masukkan kata sandi Anda untuk membukanya.

Pastikan Anda menambahkan sertifikat ke gantungan kunci Sistem, bukan gantungan kunci masuk. Klik "Selalu Percaya," meskipun ini sepertinya tidak melakukan apa-apa.

Setelah ditambahkan, klik dua kali. Anda mungkin harus mengautentikasi lagi.

Luaskan bagian "Kepercayaan".

"Saat menggunakan sertifikat ini," setel ke "Selalu Percaya"

Vincil Bishop
sumber
6

Saya mencoba semuanya dan apa yang membuatnya berhasil: Saat mengimpor, pilih kategori yang tepat, yaitu Otoritas Sertifikat Akar Tepercaya :

(Maaf itu Jerman, tapi ikuti saja gambar)

masukkan deskripsi gambar di sini

Hannes Schneidermayer
sumber
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
sumber
1
Ini adalah satu-satunya yang bekerja untuk saya dengan chrome 77. Terima kasih telah menyelamatkan hari saya.
Romain
Bagaimana cara menggunakan file yang dihasilkan? Saya mengerti cara menggunakan file domain .crt dan .key tapi untuk apa file .csr? Dan bagaimana cara menggunakan file rootCA. *? Perluas jawaban Anda ...
Chiwda
Terima kasih banyak, Anda baru saja menyelamatkan hari saya!
dodancs
6

Pos ini sudah dibanjiri dengan tanggapan, tetapi saya membuat skrip bash berdasarkan beberapa jawaban lain untuk membuatnya lebih mudah untuk menghasilkan sertifikat TLS yang ditandatangani sendiri yang valid di Chrome (Diuji dalam Chrome 65.x). Semoga bermanfaat bagi orang lain.

skrip bash yang ditandatangani sendiri

Setelah Anda memasang ( dan mempercayai ) sertifikat, jangan lupa untuk memulai ulang Chrome ( chrome://restart)


Alat lain yang patut dicoba adalah cfssltoolkit CloudFlare :

cfssl

Logan
sumber
6

Untuk membuat sertifikat yang ditandatangani sendiri pada Windows yang dipercayai oleh Chrome v58 dan versi yang lebih baru, luncurkan Powershell dengan hak istimewa yang tinggi dan ketik:

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

Setelah Anda melakukan ini, sertifikat akan disimpan ke sertifikat Komputer Lokal di bawah Personal \ Certificates .

Anda ingin menyalin sertifikat ini ke toko Otoritas Sertifikasi root Tepercaya \ Sertifikat .

Salah satu cara untuk melakukan ini: klik tombol start Windows, dan ketik certlm.msc. Lalu seret dan lepas sertifikat yang baru dibuat ke toko Otoritas Sertifikasi Root \ Certificates Tepercaya per tangkapan layar di bawah ini. masukkan deskripsi gambar di sini

mpowrie
sumber
bagaimana melakukan ini di mac tolong? terima kasih :)
Artanis Zeratul
@mprie. Setelah menghasilkan ini, bagaimana cara menautkannya dengan server web Apache? Di server host lokal.
Ifedi Okonkwo
Ifedi Okonkwo: Saya tidak yakin dengan server web Apache maaf, tetapi dengan IIS Anda menambahkan situs yang mengikat jenis https, termasuk nama host yang sepenuhnya memenuhi syarat, dan pilih sertifikat SSL.
mpowrie
Ini bekerja seperti pesona. Saya akan mengatakan Anda harus melakukan satu langkah tambahan jika Anda ingin menetapkan sertifikat itu sebagai ikatan ... dan bahwa sertifikat tersebut juga harus ada di Personal> Certificates. Menyeret dan menjatuhkan, karena alasan tertentu, sebenarnya menghapusnya dari Sertifikat pribadi dan menempatkannya di Sertifikat Tepercaya. Jadi pastikan Anda menyalin dan menempelnya.
StephenPAdams
5

Memperbaiki localhost SSL / HTTPS di mac / osx:

  1. Klik kunci merah dengan tanda silang di bilah alamat Anda saat mencoba membuka lingkungan localhost https Anda. Akan ada membuka jendela dengan beberapa informasi tentang sertifikat.

  2. Klik pada jendela informasi "Detail"

  3. Alat Pengembang chrome terbuka pada tab 'Keamanan'. Klik pada Lihat Sertifikat . Gambar sertifikat
  4. Tambahkan ke gantungan kunci 'Sistem' Anda (bukan gantungan kunci 'login' Anda yang dipilih secara default).

  5. Buka gantungan kunci Anda (lagi) dan temukan sertifikatnya. Klik di atasnya dan pastikan Anda "Percaya" semua.

  6. Mulai ulang krom dan itu akan berhasil.

cscheltinga
sumber
Antarmuka grafis yang bodoh mungkin tidak menerima sertifikat di MacoOS 10.14.5, tetapi Anda dapat mengimpornya security import filename.pem -k ~/Library/Keychains/login.keychain. Grafik memberikan kesalahan -25294
boatcoder
5

Saya mengalami masalah yang sama: Saya telah menginstal sertifikat ke toko Otoritas Tepercaya Windows, dan Chrome masih menolak sertifikat, dengan kesalahan ERR_CERT_COMMON_NAME_INVALID. Perhatikan bahwa ketika sertifikat tidak dipasang dengan benar di toko, kesalahannya adalahERR_CERT_AUTHORITY_INVALID .

Seperti yang ditunjukkan oleh nama kesalahan, komentar ini , dan pertanyaan ini , masalahnya terletak pada nama domain yang dinyatakan dalam sertifikat. Ketika diminta untuk "Nama Umum" saat membuat sertifikat, saya harus memasukkan nama domain yang saya gunakan untuk mengakses situs ( localhostdalam kasus saya). Saya memulai ulang Chrome menggunakan chrome://restartdan akhirnya senang dengan sertifikat baru ini.

Hugo Wood
sumber
Saya juga menggunakan localhost tetapi chrome tidak senang tentang hal itu imgur.com/a/mjlglVz Windows 10, Chrome 78. Saya mengikuti instruksi dari sini: stackoverflow.com/a/44398368/4983983 Saya mengakses halaman melalui localhost
mencobaHard
menggunakan nama umum "localhost" hampir berhasil, dan akhirnya berhasil ketika saya juga meluncurkan chrome dengan opsi--allow-insecure-localhost
pestophagous
5

Pada Chrome 58+ saya mulai mendapatkan kesalahan sertifikat pada macOS karena SAN hilang. Berikut adalah cara mendapatkan kunci hijau pada bilah alamat lagi.

  1. Hasilkan sertifikat baru dengan perintah berikut:

    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. Impor server.crtke KeyChain Anda, lalu klik dua kali pada sertifikat, perluas Trust , dan pilih Always Trust

Perbarui halaman https://domain.dev di Google Chrome, jadi kunci hijau sudah kembali.

Adriano Rosa
sumber
Ini berfungsi untuk subdomain api.domain.devtetapi saya masih memiliki halaman peringatan di 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.Ada ide?
François Romain
5

Untuk Chrome di MacOS, jika Anda telah menyiapkan sertifikat:

  • Keluar dari Chrome ( cmd+Q ).
  • Mulai aplikasi Keychain Access dan buka kategori "Sertifikat".
  • Seret file sertifikat Anda ke jendela Akses Keychain dan ketikkan kata sandi untuk file sertifikat.
  • Klik dua kali pada sertifikat Anda dan buka daftar "Kepercayaan".
    • Dalam baris "Saat menggunakan sertifikat ini," pilih "Selalu Percaya."
    • Tutup barang ini dan ketikkan kata sandi Anda.
  • Mulai Chrome dan hapus semua cache.
  • Periksa apakah semuanya baik-baik saja.
Alykoff Gali
sumber
5

Mengizinkan localhost tidak aman berfungsi dengan baik melalui metode ini chrome: // flags / # allow-insecure-localhost

Hanya saja Anda perlu membuat nama host pengembangan Anda ke xxx.localhost.

Kedelai
sumber