Baru-baru ini, Chrome berhenti bekerja dengan sertifikat SSL yang saya tandatangani sendiri, dan menganggapnya tidak aman. Saat saya melihat sertifikat di DevTools | Security
tab, saya dapat melihat bahwa tertulis
Nama Alternatif Subjek Hilang Sertifikat untuk situs ini tidak berisi ekstensi Nama Alternatif Subjek yang berisi nama domain atau alamat IP.
Kesalahan Sertifikat Ada masalah dengan rantai sertifikat situs (net :: ERR_CERT_COMMON_NAME_INVALID).
Bagaimana cara memperbaikinya?
google-chrome
ssl
https
pkix
Brad Parks
sumber
sumber
CN=www.example.com
mungkin salah. Nama host selalu masuk ke SAN . Jika ada di CN , maka itu harus ada di SAN juga (Anda harus mendaftar dua kali dalam kasus ini). Untuk aturan dan alasan selengkapnya, lihat Bagaimana Anda menandatangani Permintaan Penandatanganan Sertifikat dengan Otoritas Sertifikasi Anda dan Bagaimana cara membuat sertifikat yang ditandatangani sendiri dengan openssl? Anda juga perlu menempatkan sertifikat yang ditandatangani sendiri di penyimpanan kepercayaan yang sesuai.Jawaban:
Untuk memperbaikinya, Anda perlu memberikan parameter tambahan ke
openssl
saat Anda membuat sertifikat, pada dasarnya-sha256 -extfile v3.ext
di mana
v3.ext
file seperti itu, dengan%%DOMAIN%%
diganti dengan nama yang sama yang Anda gunakan sebagai milik AndaCommon Name
. Info lebih lanjut di sini dan di sini . Perhatikan bahwa biasanya Anda menyetelCommon Name
dan%%DOMAIN%%
ke domain yang Anda coba buatkan sertifikatnya. Jadi jika yawww.mysupersite.com
, maka Anda akan menggunakannya untuk keduanya.v3.ext
Catatan: Skrip yang mengatasi masalah ini, dan membuat sertifikat ssl tepercaya sepenuhnya untuk digunakan di Chrome, Safari, dan dari klien Java dapat ditemukan di sini
Catatan lain : Jika semua yang Anda coba lakukan adalah menghentikan chrome agar tidak menampilkan kesalahan saat melihat sertifikat yang ditandatangani sendiri, Anda dapat memberi tahu Chrome untuk mengabaikan semua kesalahan SSL untuk SEMUA situs dengan memulainya dengan opsi baris perintah khusus, seperti yang dijelaskan di sini di SuperUser
sumber
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext
. Tentu saja Anda masih perlu menyimpanv3.ext
ke file di folder yang sama.unknown option -extfile
. Bagaimana cara mengatasinya?extfile
arahan dalam perintah openssl yang salah? Alih-alih digunakan dalamopenssl req -new ...
, ini digunakan dalamopenssl x509 -req ...
. Setidaknya itulah yang dikatakan seseorang di sini , yang tampaknya benar dari contoh yang saya miliki di jawaban lain untuk pertanyaan serupa tentang cara menghasilkan sertifikat ini sepenuhnyaSolusi berikut berhasil untuk saya di chrome 65 ( ref ) -
Buat file konfigurasi OpenSSL (contoh: req.cnf)
Buat sertifikat yang mereferensikan file konfigurasi ini
sumber
basicConstraints = CA:true
hilang?Bash Script
Saya membuat skrip bash untuk memudahkan pembuatan sertifikat TLS yang ditandatangani sendiri yang valid di Chrome.
Diuji
Chrome 65.x
dan masih berfungsi. Pastikan untuk memulai ulang chrome setelah memasang sertifikat baru.Sumber Daya Lainnya
Alat lain (yang jauh lebih kuat) yang layak untuk dicoba adalah
cfssl
toolkit CloudFlare :sumber
Saya hanya menggunakan
-subj
parameter menambahkan alamat ip mesin. Jadi diselesaikan dengan satu perintah saja.Anda dapat menambahkan atribut lain seperti C, ST, L, O, OU, emailAddress untuk menghasilkan sertifikat tanpa diminta.
sumber
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"
IIS kemudian membutuhkan*.pfx
format:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
Saya mengalami begitu banyak masalah saat mendapatkan sertifikat yang ditandatangani sendiri yang berfungsi di macos / Chrome. Akhirnya saya menemukan Mkcert, "Alat zero-config sederhana untuk membuat sertifikat pengembangan tepercaya secara lokal dengan nama apa pun yang Anda inginkan." https://github.com/FiloSottile/mkcert
sumber
Buat salinan konfigurasi OpenSSL Anda di direktori beranda:
atau di Linux:
Tambahkan Nama Alternatif Subjek ke
openssl-temp.cnf
, di bawah[v3_ca]
:Ganti
localhost
dengan domain yang ingin Anda buatkan sertifikatnya.Hasilkan sertifikat:
Anda kemudian dapat menghapus
openssl-temp.cnf
sumber
Saya bisa menyingkirkan (net :: ERR_CERT_AUTHORITY_INVALID) dengan mengubah nilai DNS.1 dari file v3.ext
[alt_names] DNS.1 = domainname.com
Ubah domainname.com dengan domain Anda sendiri.
sumber
Berikut ini cara yang sangat sederhana untuk membuat sertifikat IP yang dipercaya oleh Chrome.
File ssl.conf ...
Di mana, tentu saja 192.168.1.10 adalah IP jaringan lokal yang kami ingin Chrome percayai.
Buat sertifikat:
Di Windows, impor sertifikat ke Penyimpanan Sertifikat Akar Tepercaya di semua mesin klien. Di Ponsel Android atau Tablet, unduh sertifikat untuk menginstalnya. Sekarang Chrome akan mempercayai sertifikat di windows dan Android.
Di windows dev box, tempat terbaik untuk mendapatkan openssl.exe adalah dari "c: \ Program Files \ Git \ usr \ bin \ openssl.exe"
sumber
pada MAC mulai dari chrome Versi 67.0.3396.99, sertifikat yang ditandatangani sendiri berhenti berfungsi.
regenerasi dengan semua yang tertulis di sini tidak berhasil.
MEMPERBARUI
memiliki kesempatan untuk mengonfirmasi bahwa pendekatan saya berfungsi hari ini :). Jika tidak berhasil, pastikan Anda menggunakan pendekatan ini
disalin dari sini https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
AKHIR UPDATE
akhirnya dapat melihat hijau Aman hanya ketika menghapus sertifikat saya dari sistem , dan menambahkannya ke rantai kunci lokal . (jika ada - jatuhkan dulu). Tidak yakin apakah itu penting, tetapi dalam kasus saya, saya mengunduh sertifikat melalui chrome, dan memverifikasi bahwa tanggal pembuatan adalah hari ini - jadi itu adalah yang baru saja saya buat.
semoga bermanfaat bagi seseorang yang menghabiskan waktu seharian di situ.
jangan pernah memperbarui chrome!
sumber
Jika Anda ingin menjalankan server localhost Anda, Anda perlu mengatur
CN = localhost
danDNS.1 = localhost
.sumber