Bagaimana cara sertifikat SSL bekerja hanya untuk beberapa klien?

11

Penyedia hosting saya baru -baru ini menerbitkan kembali dan menginstal ulang sertifikat SSL untuk domain saya, setelah mereka membiarkan yang lama berakhir karena kesalahan.

Saya sekarang dapat menjelajahi situs web melalui HTTPS lagi, dan begitu juga tuan rumah saya, dan juga sejumlah pengguna lain.

Namun, beberapa pengguna (setidaknya selusin dari ratusan) masih mendapatkan Your connection is not securepesan kesalahan pada berbagai browser dan platform. (Ini terbukti sulit untuk mendiagnosis masalah yang tidak dapat saya reproduksi.)

Saya memahami browser yang berbeda menggunakan daftar Otoritas Sertifikasi (CA.) yang berbeda

  1. Bagaimana mungkin pengguna yang menjalankan versi Firefox yang sama seperti saya (45.0.1 di OS X) mendapatkan SEC_ERROR_UNKNOWN_ISSUERkesalahan (hanya untuk situs saya) sementara saya tidak? Apa yang memungkinkan? Pengguna kata itu membersihkan cache dan me-reboot laptopnya.

Saya menjalankan pemeriksaan SSL di digicert.com . Hasilnya adalah ini:

Sertifikat SSL tidak dipercaya

Sertifikat tidak ditandatangani oleh otoritas tepercaya (memeriksa terhadap root store Mozilla). Jika Anda membeli sertifikat dari otoritas tepercaya, Anda mungkin hanya perlu menginstal satu atau lebih sertifikat Menengah. Hubungi penyedia sertifikat Anda untuk bantuan melakukan ini untuk platform server Anda.

  1. Kenapa saya bisa terhubung ke situs tanpa kesalahan SSL jika ini masalahnya?
Fabien Snauwaert
sumber
1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.- Bagaimana Anda meninggalkan tanggung jawab ini di tangan mereka?
joeqwerty
3
Hanya karena saya bukan sysadmin, saya menyewa dedicated server yang dikelola dari mereka. (Untuk cerita latar belakang kecil, saya menulis materi dan kode pembelajaran bahasa,
selain
7
@joeqwerty: Karena itu pekerjaan mereka? Dia benar-benar membayar mereka untuk menyelesaikan masalah ini untuknya.
Lightness Races in Orbit
@LightnessRacesinOrbit: Itu asumsi saya tidak membuat, maka pertanyaannya.
joeqwerty
1
bugzilla.mozilla.org/show_bug.cgi?id=399324 adalah laporan bug yang meminta dukungan untuk mengunduh sertifikat perantara secara otomatis di Firefox. Diskusi (8 tahun sekarang) bermuara pada "IE melakukannya!" / "Persetan dengan IE, RFC mengatakan itu opsional!" / "Pernah dengar prinsip ketahanan?" / "Konfigurasi server Anda buruk dan Anda akan merasa buruk!"

Jawaban:

22

Rantai sertifikat sertifikat Anda tidak lengkap. Kemungkinan besar penyedia Anda gagal menginstal beberapa sertifikat perantara ketika menginstal sertifikat baru.

Seringkali sertifikat perantara tersebut disediakan oleh otoritas SSL, untuk memberikan dukungan untuk beberapa browser dan sistem operasi yang lebih lama. Itulah alasannya, bahwa sementara itu bekerja untuk Anda, itu tidak bekerja untuk beberapa klien Anda.

Utilitas yang sangat hebat untuk memeriksa masalah SSL dengan situs web Anda adalah uji Server SSL oleh SSLlabs . Seperti yang dapat Anda lihat di tautan di atas, Anda tidak hanya memiliki masalah berantai di sini, tetapi juga algoritma tanda tangan yang digunakan untuk membuat sertifikat Anda lemah, server web Anda masih rentan terhadap serangan POODLE dan masih mendukung RC4, yang merupakan juga dianggap tidak aman ...

Saya tidak ingin mengatakan apa pun terhadap penyedia server web Anda, tetapi di posisi Anda, saya akan mengirim mereka, bahwa mereka memperbaiki semua masalah ini secepatnya, atau mengubah ke penyedia lain ...

s1lv3r
sumber
Terima kasih, itu sangat membantu. Karena penasaran, ada ide mengapa klien di OS X dan versi Firefox yang sama dengan saya mendapatkan SEC_ERROR_UNKNOWN_ISSUERkesalahan sementara saya tidak? Mungkinkah versi OS-nya berbeda?
Fabien Snauwaert
1
@FabienSnauwaert Ya, jika Anda gulir ke bawah ke "Simulasi Handshake", tes SSLLabs akan mencoba mensimulasikan berbagai kombinasi versi OS / Browser. Peramban tidak menangani sendiri koneksi SSL sepenuhnya, tetapi sebagian bergantung pada implementasi OS. Jadi jelas versi OS membuat perbedaan.
s1lv3r
3
Bukan saja klien memiliki daftar CA yang berbeda. Ada juga kemungkinan bahwa beberapa klien menyimpan sertifikat perantara sehingga situs dengan sertifikat perantara yang hilang dapat berfungsi jika browser sebelumnya telah mengunjungi situs yang telah mengkonfigurasi dengan benar sertifikat perantara tersebut.
kasperd
Situs SSLlabs adalah alat yang bagus. Terima kasih untuk referensi.
Parapluie
12

Agar sertifikat dapat dipercaya, sertifikat tersebut harus ditandatangani oleh entitas yang dipercaya oleh kombinasi browser / OS Anda, atau yang pada gilirannya sendiri telah ditandatangani oleh entitas tersebut. Ini biasanya dilakukan oleh satu root CA tepercaya yang menandatangani CA perantara, dan CA perantara menandatangani sertifikat Anda. Ini menciptakan rantai, seperti ini:

  1. Rooting CA yang dipercaya oleh komputer Anda, dan tandatangani
  2. CA Menengah, yang bertanda
  3. Sertifikat Anda, yang hanya tepercaya karena rantai yang mengarah ke root CA.

Masalahnya di sini adalah dengan sertifikat CA menengah. Untuk memastikan bahwa setiap orang dapat memvalidasi rantai sepanjang jalan kembali ke root CA, penyedia Anda harus menyertakan sertifikat perantara dalam konfigurasi servernya. Dalam hal ini, mereka belum.

Alasan mengapa itu berfungsi untuk beberapa pengguna adalah karena mereka memiliki sertifikat perantara di "toko kepercayaan" mereka sendiri. Dalam kasus itu, mereka akan menerima sertifikat Anda karena mereka sudah mempercayai perantara. Tetapi dalam kasus di mana pengunjung Anda memiliki OS / browser yang berbeda, mereka tidak memiliki sertifikat perantara, sehingga mereka perlu mendapatkannya dari server web Anda - dan server web Anda tidak membagikannya, sehingga mereka tidak memiliki cara untuk melakukannya. memverifikasinya.

Jenny D
sumber
Terima kasih, ini membantu saya melihat masalah dengan jelas sekarang. Apakah ada trik untuk membuat pengguna menambahkan sertifikat perantara ke "trust store" mereka sendiri sambil menunggu tuan rumah saya memperbaiki sertifikat? misalnya: mengunjungi situs SSL lain yang bergantung padanya?
Fabien Snauwaert
1
@FabienSnauwaert Tidak ada trik, sayangnya. Mengunjungi situs yang memiliki sertifikat perantara yang sama tidak akan membantu; mereka harus benar-benar mengunduh sertifikat dan menambahkannya secara manual ke browser mereka. Saya percaya sertifikat khusus ini termasuk dalam browser yang lebih baru - ia bekerja di Firefox 45.0.1 tetapi tidak di 43.0.4, jadi itu termasuk di suatu tempat antara dua versi. Jadi, jika Anda bisa membuat klien Anda meningkatkan peramban mereka, itu akan membantu.
Jenny D
4
@JennyD Sertifikat perantara di-cache oleh peramban modern, jadi mengunjungi situs lain yang menggunakan perantara yang sama kemungkinan besar akan berhasil. Namun, itu benar-benar bukan sesuatu yang harus ditanyakan kepada pengguna mereka ... (lihat: bugzilla.mozilla.org/show_bug.cgi?id=629558 , sslmate.com/blog/post/chrome_cached_sha1_chains )
Bob
0

Jika Anda menggunakan Pinning Kunci Publik HTTP dan penyedia Anda memberi Anda sertifikat baru, kunci publik mungkin sudah berubah. Kunci-kunci ini disimpan di browser klien untuk periode yang Anda tentukan.

jarvis
sumber