Karena saya memutakhirkan Firefox ke versi 38, saya menemui masalah ketika mengirimkan formulir tertentu di situs web https://usercenter.checkpoint.com/ Sebagian besar situs web berfungsi secara normal tetapi mengirimkan formulir saat membuka tiket dukungan (URL di log di bawah ini) ) menyebabkan Firefox gagal negosiasi TLS. Halaman kesalahan Firefox hampir tidak menjelaskan apa-apa:
Koneksi Aman Gagal
Koneksi ke server diatur ulang saat halaman dimuat.
- Halaman yang Anda coba lihat tidak dapat ditampilkan karena keaslian data yang diterima tidak dapat diverifikasi.
- Silakan hubungi pemilik situs web untuk memberi tahu mereka tentang masalah ini.
Laporkan kesalahan ini
Melaporkan alamat dan informasi sertifikat untuk usercenter.checkpoint.com akan membantu kami mengidentifikasi dan memblokir situs jahat. Terima kasih telah membantu membuat web yang lebih aman!
Secara otomatis melaporkan kesalahan di masa mendatang. Pelajari lebih lanjut ...
Di konsol pengembang web saya hanya melihat ini:
19:58:44.470 This site makes use of a SHA-1 Certificate; it's recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.1 AjaxCall
19:58:44.589 POST https://usercenter.checkpoint.com/usercenter/portal/js_pane/supportId,CreateServiceRequestId [178ms]
Baris pertama hanyalah peringatan bahwa di masa depan SHA-1 tidak akan didukung. Apakah saya harus mengaktifkan sesuatu untuk melihat penyebab kegagalan TLS? TLS dan informasi sertifikat dari konsol di bawah ini:
Saya tidak melihat ada yang salah di sana. Putus asa saya mencoba bermain dengan parameter TLS about:config
tanpa hasil:
security.tls.insecure_fallback_hosts
security.tls.unrestricted_rc4_fallback
security.tls.version.fallback-limit
security.tls.version.max
security.tls.version.min
Uji Qualy SSL tidak menunjukkan kesalahan apa pun: https://www.ssllabs.com/ssltest/analyze.html?d=usercenter.checkpoint.com
Ada artikel yang menjanjikan di pangkalan pengetahuan Red Hat: Firefox 38 dan server SSL / TLS yang tidak toleran terhadap versi TLS tetapi solusinya hanya tersedia untuk pelanggan yang membayar.
Saya juga telah memeriksa Kompatibilitas Situs untuk Firefox 38 .
Pertanyaan
- Bagaimana saya bisa memecahkan masalah apa alasan kegagalan TLS?
- Di Firefox, adakah daftar putih lain yang dapat dikonfigurasi pengguna di mana saya dapat mencoba menambahkan alamat situs web yang gagal?
- Apa yang bisa menjadi alasan kegagalan untuk muncul hanya setelah mengirim formulir tertentu sementara konsol menunjukkan bahwa permintaan POST pergi ke host yang sama
usercenter.checkpoint.com
dengan komunikasi sukses sebelumnya?
{Distinguished Name, Serial Number}
membuat sertifikat menjadi unik, sehingga dapat dipilih dengan jelas; lihat RFC 4158 . Tetapi lihat peringatan di bawah ini pada memilihnya karena itu bukan hal yang mudah untuk dilakukan. Selain itu, Pos Pemeriksaan tidak boleh mengirim sertifikat G5 lama sebagai bagian dari rantai.Jawaban:
Gunakan
openssl s_client
. Ini pisau tentara swiss untuk hal-hal seperti ini. Dan gunakanopenssl x509
untuk membuang sertifikat.Anda biasanya tertarik pada
{Issuer, Subject}
pasangan dalam rantai seperti ini:Perhatikan bagaimana penerbit di server menjadi subjek untuk sertifikat yang lebih tinggi berikutnya. Gutmann menyediakan diagram berikut untuk menggambarkannya dalam bukunya Rekayasa Keamanan :
Di atas, root CA ditandatangani sendiri, dan masalah dan subjeknya sama. Jika ada level 3, itu akan menjadi:
Tetapi Anda biasanya tidak melihatnya dalam rantai karena Anda harus memercayainya. Dan bagian dari persyaratan untuk jangkar kepercayaan adalah Anda sudah memilikinya untuk memastikan tidak rusak.
Menggunakan nama Subjek dan Penerbit menggunakan apa yang disebut Nama Dibedakan . Cara lain untuk membentuk rantai adalah dengan
KEYIDs
. Terkadang Anda akan melihatnya melalui Subject Key Identifier (SKI) dan Authority Key Identifier (AKI). Pengidentifikasi kunci hanyalah cap jempol dari kunci publik yang dicerna.Anda dapat menemukan bacaan tentang Nama Terhormat dalam standar seperti RFC 4514 ; dan menggunakan KEYID dalam standar seperti RFC 4518 , yang berkaitan dengan pembangunan jalur.
Tampaknya masalahnya adalah dengan browser (tetapi lihat di bawah). Sepertinya hilang
Class 3 Public Primary Certification Authority
dengan cap jempola1 db 63 93 91 6f 17 e4 18 55 09 40 04 15 c7 02 40 b0 ae 6b
.Ketika saya mengunjungi Symantec Root Certifcates dan mengunduh Otoritas Sertifikasi Publik Publik Kelas 3 , saya dapat membangun jalur untuk validasi (perhatikan di
Verify return code: 0 (ok)
bawah).Anda harus mengunduh dan menginstal
Class 3 Public Primary Certification Authority
di root store tepercaya browser Anda. Atau tentukan mengapa itu tidak digunakan oleh browser untuk membangun path (lihat selanjutnya).Mozilla dan Firefox berbicara tentang
Class 3 Public Primary Certification Authority
dalam posting blog: Menghapus Sertifikat secara otomatis dengan Kunci RSA 1024-bit . Menurut posting itu, mereka telah mencabut sertifikat CA sejak Firefox 32. Saya tidak benar-benar menyalahkan mereka karena kunci ini digunakan jangka panjang untuk operasi penandatanganan CA, dan mereka membutuhkan parameter "lebih kuat" karena mereka harus hidup 10 hingga 30 tahun (secara harfiah).Checkpoint perlu mendapatkan sertifikat server baru yang dikeluarkan di bawah sertifikat (rantai) dengan parameter kontemporer, seperti CA dengan moduli RSA 4096-bit dan SHA-256. Atau CA bawahan dengan modul RSA 2048-bit dan SHA-256 ...
(Lihat juga apa yang tidak berhasil untuk saya di bawah).
Berikut adalah contoh memvalidasi sertifikat server dengan Otoritas Sertifikasi Publik Publik Kelas 3 menggunakan OpenSSL
s_client
:Sebelumnya saya berkata "Di bagian atas, root CA ditandatangani sendiri, dan masalah dan subjeknya sama" . Berikut adalah dump CA root yang ditandatangani sendiri, di mana Subjek dan Penerbit adalah sama. Ini juga menunjukkan moduli 1024-bit dan sha1WithRSAEncryption.
Sebelumnya saya mengatakan, "Pos pemeriksaan perlu mendapatkan sertifikat server baru yang dikeluarkan di bawah sertifikat (rantai) dengan parameter kontemporer, seperti CA dengan moduli RSA 4096-bit dan SHA-256. Atau bawahan CA dengan moduli RSA 2048-bit dan SHA-256 ... " .
Inilah yang tidak berhasil untuk saya: rooting atau jangkar kepercayaan pada CA bawahan yang lebih kuat
VeriSign Class 3 Public Primary Certification Authority - G5
, dan bukan yang lebih lemah 1024-bit Root CA.EDIT : ini disebabkan oleh bug di OpenSSL 1.0.2a dan di bawahnya. Itu diperbaiki di OpenSSL 1.0.2b. Lihat Perilaku yang diharapkan untuk verifikasi ketika bawahan dalam rantai dipromosikan ke root yang ditandatangani sendiri?
Masalah praktis adalah Symantec ulang mengeluarkan sertifikat dengan nama yang sama dan kunci publik yang sama, sehingga dibedakan nama , Subjek Key Identifier dan Kunci Otoritas Identifier tidak berubah; tetapi hanya mengubah Nomor Seri .
Saya dapat menemukannya di bawah ini karena nomor seri yang berbeda antara sertifikat yang dikirim dalam rantai versus yang diunduh dari situs Symantec. Kemudian menjadi jelas bahwa sertifikat yang dikeluarkan kembali diubah dari CA Subordinate menjadi CA Root.
Anda dapat menggunakan
-showcerts
dengan OpenSSLs_client
untuk melihat sertifikat di rantai:Apa yang biasanya saya lakukan selanjutnya adalah menyalin sertifikat yang dikodekan PEM dalam rantai ke clipboard, dan kemudian gunakan
pbpaste
untuk menempelkan ke terminal dan pipa itu ke OpenSSLx509
. Misalnya, inilah Level 2 yangVeriSign Class 3 Public Primary Certification Authority - G5
dikirim sebagai bagian dari rantai:sumber
Ini diperbaiki dengan mengetikkan: config di bilah alamat, lalu pilih "Aku akan hati-hati, aku janji!" tombol. Pada saat itu klik dua kali opsi security.tls.insecure_fallback_hosts dan kemudian tambahkan alamat yang Anda coba akses.
Saya harus menghapus "https: \" (letakkan kedua garis miring terbalik, superuser menghapus yang kedua) dari alamat saya untuk membuatnya berfungsi, tetapi hasil Anda mungkin berbeda jadi mungkin coba keduanya.
Ini akurat pada Firefox versi 43.0.1.
sumber
security.tls.insecure_fallback_hosts
itu tidak terjadi. Kemudian dalam komentar a menulis bahwa masalahnya ada di sisi server. Server menutup koneksi.Jika Anda melihat Otoritas Sertifikasi Publik Publik VeriSign Kelas 3 - G5 yang disediakan dalam rantai bersama
openssl s_client ... -showcerts
dan Otoritas Sertifikasi Publik Publik VeriSign Kelas 3 - G5 tersedia untuk diunduh, Anda akan melihat bahwa itu adalah sertifikat yang berbeda. Jadi Verisign menerbitkan kembali sertifikat dengan nama dan kunci publik subjek yang sama .Versi rantai Otoritas Sertifikasi Publik Publik VeriSign Kelas 3 - G5 memiliki nomor seri berikut, dan tidak ditandatangani sendiri (perhatikan Subjek dan Penerbit berbeda):
Versi download dari Symantec Sertifikat Akar dari VeriSign Sertifikasi Kelas 3 Umum Primer Authority - G5 memiliki nomor seri berikut, dan itu adalah ditandatangani sendiri (pemberitahuan Subjek dan Emiten yang sama):
Sebenarnya hanya ada satu perbaikan di sini.
Pos pemeriksaan harus berhenti mengirim versi lama VeriSign Kelas 3 Otoritas Sertifikasi Publik Publik - bawahan G5 dalam rantai.
Itu karena dalam praktiknya, jalur verifikasi dan pemilihan sertifikat akan menjadi bingung karena sertifikat G5 lama dan sertifikat G5 baru terlalu mirip. Mereka terlalu mirip karena mereka menggunakan Nama Dibedakan yang sama dan Identifikasi Kunci Subjek yang sama / Pengidentifikasi Kunci Otoritas .
Secara teori, Anda bisa mengekstrak sertifikat G5 lama dari rantai yang dikirim oleh server dan menaruhnya di Mozilla Trust Store. Tapi saya sangat curiga ini akan membingungkan agen pengguna yang mencoba membangun jalur karena satu-satunya hal yang berubah adalah nomor seri.
Untuk memahami kebingungan, lihat RFC 4158 dan cara memilih sertifikat. Salah satu caranya adalah
{Distinguished Name, Serial Number}
tuple. Tetapi sertifikat yang diverifikasi tidak termasuk nomor seri penerbit. Ini hanya mencakup Nama dan Pengidentifikasi Kunci Otoritas Terpandang .Bagian 3.5.12 Pencocokan Kunci Pengidentifikasi (KID), tidak menentukan:
Tapi itu tidak diperlukan, dan itu hilang dari warez yang disediakan Symantec. Untuk melihatnya langsung, buang perantara Tingkat 1 yang dikirim dalam rantai. Servernya bernama VeriSign Class 3 Secure Server CA - G3 . Perhatikan bahwa ia memiliki Pengidentifikasi Kunci Otoritas , tetapi tidak ada Nomor Seri :
sumber