Apa yang terjadi pada browser pengguna jika sertifikat SSL diganti pada pertengahan sesi?

8

Mengingat browser modern menghapus sertifikat keamanan yang ditandatangani menggunakan algoritma hash SHA1, kami sibuk mengganti semua sertifikat SHA1 kami dengan SHA2. Secara umum kami dapat dengan mudah mengganti sertifikat untuk aplikasi web yang sebagian besar menggunakan internal ini pada malam hari atau pada akhir pekan, ketika lalu lintas sedikit atau tidak ada sama sekali.

Apa yang akan terjadi jika saya, tanpa sadar, di tengah sesi terenkripsi dan sertifikat untuk domain diganti?

Agar aman, kami menyarankan klien kami bahwa mereka dapat menganggap pengguna pada pertengahan sesi selama perubahan ini dapat melihat gangguan sesi mereka, dan kemungkinan hilangnya data apa pun yang belum disimpan dalam database. Jika saya berada di pertengahan sesi selama penggantian sertifikat, dapatkah saya berasumsi bahwa ketika saya memuat halaman berikutnya, setelah penggantian sertifikat, browser saya akan melihat sertifikat yang ditandatangani berbeda dari sesi saya dibuat, dan menyebabkan sesi " ketakutan". Saya berharap semua browser akan menangani situasi ini dengan cara yang sama, tetapi tolong beri tahu saya jika saya salah.

Saya telah menghabiskan cukup banyak waktu mencari lebih spesifik tentang bagaimana browser akan menghadapi skenario ini, tetapi saya belum beruntung menemukan informasi umum atau teknis. Saya benar-benar ingin tahu, dan telah memutuskan untuk mengirim pertanyaan ini dengan harapan mendapatkan jawaban yang menjawab Q dengan singkat, dengan merujuk pada beberapa sumber yang dapat dipercaya untuk divalidasi.

Dallas
sumber

Jawaban:

7

... browser saya akan melihat sertifikat yang ditandatangani berbeda dari sesi saya dibuat dengan, dan menyebabkan sesi "panik".

Dari perspektif webmaster, dan tanpa masuk ke perincian tentang " cara kerja SSL " (yang akan lebih baik dibahas di Keamanan Informasi ) ...

Kunci sesi tidak lagi cocok sehingga server atau browser klien akan membatalkan koneksi. Browser klien kemudian akan membuat permintaan lain untuk sumber daya apa pun pada halaman berikutnya yang tidak diterima, yang akan membuka koneksi baru, membangun kembali jabat tangan SSL, sertifikat, pertukaran kunci dan kunci sesi lagi (seperti dibahas secara singkat di dekat bagian bawah di sini ).

Karena sertifikat SSL baru akan dikeluarkan ke domain yang sama, pengguna kemungkinan tidak akan melihat apa pun karena hanya sertifikat yang akan berubah (yaitu, kunci hijau masih akan ditampilkan), yang biasanya tidak dilihat oleh pengguna, terutama di antara halaman di situs yang sama.


Apa yang Anda mungkin tidak mempertimbangkan adalah bahwa ketika Anda menginstal sertifikat SSL baru, Anda harus mengkonfigurasi dan memulai kembali server Anda, jadi sesi akan ditutup lalu apa pun dan browser tidak akan menerima apa pun ...

Karena itu, saya sarankan untuk sementara mengalihkan semua lalu lintas ke halaman "Pemeliharaan" menggunakan 302 redirect , dengan pemberitahuan sebelumnya diposting di situs Anda yang menyatakan waktu pemeliharaan akan terjadi, dan untuk berapa lama situs tidak akan tersedia.

Alternatif untuk redirect adalah mengirim 503 Layanan kode respon server HTTP Tidak Tersedia dengan bidang  coba  header -Coba HTTP untuk menunjukkan kapan server akan tersedia lagi.

Last but not least, jika Anda memiliki lebih dari satu server untuk front-end situs, Anda dapat menginstal sertifikat di server lain dan mengarahkan koneksi baru ke sana saat Anda memperbarui server lain. Anda dapat memeriksa koneksi yang ada di Apache di sini dan IIS di sini untuk membantu dengan itu, jika Anda belum menggunakan pengaturan gagal-aman atau penyeimbangan beban.

dan
sumber
Sertifikat ada di penyeimbang beban di depan ... sehingga tidak ada gangguan layanan dan tidak ada pengalihan 503 / temp.
Dallas
Jadi jika saya berada di halaman 5 dari 10 halaman alur kerja ... akankah sesi saya menyimpan info sudah dimasukkan pada halaman 1-5, dan melanjutkan pada halaman 6 dengan sertifikat baru, atau akankah koneksi reset kehilangan semua variabel sesi dan mulai saya lagi di halaman 1 segar?
Dallas
Itu tergantung pada bagaimana aplikasi web Anda dikodekan. Itu harus melacak ID sesi untuk pengguna (disimpan dalam cookie, bidang formulir, URL, dll ...), yang berbeda dari sesi SSL / TLS . Jadi, jika ada putusnya koneksi (yang bisa terjadi secara normal), data sesi pengguna akan tetap selama periode waktu sampai mereka membuat koneksi lain. Dalam keadaan aneh bahwa ID sesi tidak dilacak, Anda harus melepas koneksi baru ke server lain dan menunggu koneksi yang ada selesai atau habis sebelum mengambil server off-line untuk memperbarui sertifikat SSL-nya.
dan
Saya minta maaf untuk kata-kata yang buruk. Apa yang saya maksudkan, adalah apakah suatu sesi mengambil masalah ketika koneksi berikutnya datang dari sertifikat yang berbeda dengan sesi yang dibuat. Apakah sesi tidak peduli? Saya akan berpikir sertifikat yang berbeda akan berdampak pada dimulainya kembali sesi, tapi saya mendapat kesan Anda mengatakan sesi tidak peduli tentang koneksi. Saya tidak mengetahui apa perbedaan antara sesi SSL dan "sesi pengguna"? Saya mendapat kesan bahwa ID sesi yang kami lacak adalah ID sesi SSL / TLS, yang saya pikir juga sama dengan sesi pengguna.
Dallas
Saya pikir Anda sedikit mencampur istilah: ID sesi dihasilkan oleh server dan digunakan untuk melacak pengguna melalui permintaan berikutnya karena HTTP tidak memiliki kewarganegaraan . Semua koneksi TCP socket dapat diakhiri, jadi terserah aplikasi untuk melacak pengguna ketika mereka melakukannya, yang dilakukan menggunakan ID sesi . Misalnya: masuk dengan aman ke bank atau situs aman lainnya, klik beberapa tautan, lalu nonaktifkan kartu nic Anda, lalu aktifkan dan klik tautan lain ... Anda akan tetap masuk karena ID sesi Anda dilacak oleh mereka aplikasi.
dan