Apakah ada cara untuk me-cache permintaan HTTPS di server proxy?

12

Kami menggunakan server proxy Squid di lingkungan kami dan kami ingin men-cache permintaan HTTPS.

Apakah ada cara untuk mengkonfigurasi Squid atau secara umum server proxy untuk men-cache permintaan HTTPS?

Supratik
sumber
Ini mungkin milik security.se
Tom O'Connor
1
Untuk lebih jelasnya, apakah Anda menggunakan squid di depan sekelompok server Anda sendiri, atau apakah Anda menggunakannya antara workstation Anda dan Internet?
Zoredache
Hanya untuk mengklarifikasi. Anda ingin menyimpan permintaan atau tanggapan?
Gqqnbig

Jawaban:

12

Ada cara untuk melakukannya, tetapi pada dasarnya bertentangan dengan alasan untuk menggunakan HTTPS.

Begini caranya.

  1. Hasilkan Sertifikat SSL yang ditandatangani sendiri untuk situs yang Anda inginkan untuk mencegat dan menyimpan cache permintaan.
  2. Instal dan jalankan stunnel di server proxy Anda, beri tahu bahwa sertifikat yang dihadirkannya adalah yang dihasilkan di tahap 1.
  3. Minta stunnel meneruskan permintaan yang didekripsi ke squid.
  4. Anda mungkin perlu memiliki stunnel di sisi lain, atau openssl_client untuk mengenkripsi ulang permintaan ke server hulu.

Peringatan:

  1. Pengguna Anda akan membenci Anda. Setiap permintaan SSL ke situs itu akan menampilkan jendela sertifikat yang tidak valid.
  2. Anda membuka diri terhadap potensi tuntutan hukum karena melakukan hal-hal nakal. (IANAL)
  3. Anda hanya akan bisa mendapatkan sertifikat yang ditandatangani sendiri berfungsi untuk ini, karena bagaimana web kepercayaan PKI untuk Sertifikat SSL seharusnya bekerja. Tidak mengatakan apa pun tentang CA root yang dikompromikan.

Saya tidak akan memberi Anda detail yang tepat tentang bagaimana melakukan ini, karena a) Saya pikir ini agak tidak etis, dan b) Lebih baik bagi Anda untuk belajar bagaimana melakukannya.

Saya sarankan Anda meneliti bagaimana serangan stunnel dan man-in-the-middle bekerja.

Tom O'Connor
sumber
Anda dapat meminta Trustwave zdnet.com/... untuk menjual kepada Anda sertifikat root sehingga Anda dapat mengimplementasikan solusi ini tanpa mengganggu pengguna Anda: P
Rory
2
Sebenarnya, jika Anda menggunakan domain, jauh lebih mudah untuk menghasilkan CA Anda sendiri, dan menggunakan sertifikat publik untuknya dengan Kebijakan Grup.
Tom O'Connor
1
Mempercayai SSC + MITM berguna untuk debugging protokol, caching, inspeksi paket yang dalam dan sensor / logging. : / Selain alasan itu, tidak begitu baik.
6

Hanya untuk menjelaskan mengapa ini tidak dapat dilakukan tanpa MITM - proxy hanya melihat nama DNS dari server yang ingin Anda sambungkan ketika menggunakan HTTPS terenkripsi. Itu tidak melihat URL, atau header respons. Itu tidak dapat menentukan sumber daya individual mana yang Anda akses di suatu situs, apakah itu dapat di-cache atau tidak, atau berapa kali modifikasi itu. Yang bisa dilihat adalah seseorang menginginkan sesuatu dari server jauh menggunakan HTTPS.

Ini berarti bahwa cache tidak bisa berfungsi karena proxy tidak tahu objek cache apa yang diberikan kepada Anda, atau bagaimana cara mendapatkannya di tempat pertama.

robf
sumber
5

Tidak, tidak ada: mereka dienkripsi ... Solusi akan menjadi sesuatu seperti penyebaran manusia-di-tengah , tetapi itu akan mengalahkan semua alasan di balik https .

yrk
sumber
1
Apakah tidak ada solusi untuk mencapai ini atau memaksa server proxy untuk mendekripsi dan cache?
Supratik
Penanganannya akan agak yang mensimulasikan man-in-middlepenyebaran, tapi itu akan mengalahkan semua alasan di balik https
yrk
5
Saya tidak setuju bahwa itu akan mengalahkan semua alasan di balik https. Jika Anda melakukan ini di rumah dan Anda memiliki proxy, data Anda masih akan menggunakan https antara proxy Anda dan situs web.
brunoqc
@brunoqc itu pekerjaan VPN.
yrk
1
Jika caching muatan https penting untuk alasan tertentu atau debugging sesi https, MITM sangat berguna. Sebenarnya, beginilah cara Charles bekerja.
1

Zeus (Now Riverbed's) ZTM Traffic Manager dapat melakukan ini karena dapat menerjemahkan lalu lintas http dan https baik cara maupun cache konten yang tidak terenkripsi - itu berfungsi, kami menggunakannya, tetapi harganya sangat mahal - seperti harga Porsche per server.

Chopper3
sumber
5
Tetapi itu masih mengharuskan Anda untuk menginstal sertifikat root baru pada klien, bukan? Dan Anda masih harus mempercayai proxy, bukan?
phihag