Apakah Sertifikat SSL yang Ditandatangani Sendiri merupakan Rasa Aman Palsu?

30

Apakah sertifikat SSL yang ditandatangani sendiri merupakan rasa aman yang salah?

Jika Anda dikuping, pengguna hanya akan menerima sertifikat seperti yang selalu dilakukannya.

Andre
sumber

Jawaban:

25

Pertanyaan menarik, itu tergantung penggunaan menurut saya. Anda masih terlindungi dalam hal sesi dienkripsi tetapi Anda tidak memiliki cara untuk mengetahui apakah sertifikat SSL yang benar disajikan kepada Anda kecuali Anda mendistribusikan sertifikat root CA Anda kepada pengguna / klien. Untuk pengujian internal / dev proyek ini akan bekerja dengan baik, Anda menghasilkan sertifikat CA root yang Anda gunakan mendistribusikan kepada pengguna Anda (dapat dilakukan melalui Kebijakan Grup di Windows dan melalui baris perintah openssl di Linux / BSD) dan kemudian menggunakan sertifikat root untuk menandatangani CSR Anda. Pengguna tidak akan melihat peringatan atau apa pun dan Anda tahu sertifikat ditandatangani oleh CA internal Anda.

Untuk situs eksternal di mana Anda tidak dapat memastikan ini, saya masih mengatakan sertifikat yang ditandatangani sendiri lebih baik daripada tidak ada SSL sama sekali jika Anda mengirim kata sandi atau informasi sensitif lainnya melalui koneksi.

Namun, di sisi positifnya ada banyak penerbit sertifikat "komersial" yang sangat murah, GoDaddy menjadi salah satunya. Anda bisa mendapatkan sertifikat sekitar 40 euro per tahun. GoDaddy bahkan menawarkan sertifikat gratis ke situs web proyek OpenSource.

HampusLi
sumber
Inilah yang kami lakukan. Hati-hati, meskipun dengan sertifikat murah. Beberapa CA root agak aneh dan tidak semua dalam koleksi sertifikat CA root yang dikirimkan dengan semua browser.
wolfgangsz
4
+1 kecuali "sertifikat yang ditandatangani sendiri lebih baik daripada tidak ada SSL sama sekali" - jika Anda memverifikasi bahwa itu adalah sertifikat Anda, dan bukan sertifikat yang disediakan oleh MITM. Jujur, kapan terakhir kali pengguna normal melakukan itu? (Saya menduga jawabannya akan melibatkan bulan biru dan babi terbang) Dengan kata lain, menggunakan sertifikat SSL yang ditandatangani sendiri tanpa mendistribusikan sertifikat CA Anda kepada pengguna, Anda menurunkan kepekaan pengguna terhadap peringatan menakutkan yang mereka dapatkan - mereka akan belajar untuk mengklik ini, juga, "mereka menyuruh saya untuk mengabaikan peringatan di mysite.example.com, jadi saya bisa mengabaikannya di mana-mana; lihat, ikon kunci!" Voila, rasa aman yang salah!
Piskvor
7
@Piskvor, sebenarnya itu salah peramban. Pertama, browser umumnya tidak menyediakan cara "menerima secara permanen" sertifikat yang ditandatangani sebelumnya yang tidak dikenal sehingga pengguna tidak membahayakan dirinya sendiri pada setiap login. Kedua, browser tidak mencegah penggunaan HTTP biasa, juga menciptakan rasa aman yang salah. Jadi, HTTP selalu lebih buruk daripada HTTPS, baik dalam keamanan dan kesadaran pengguna (setidaknya mereka mendapatkan peringatan!).
Rotsor
1
@Rotsor: Pertama, Opera memiliki fitur ini yang Anda jelaskan built-in, FF memiliki Certificate Patrol (yang setidaknya memperingatkan perubahan sertifikat). Perhatikan juga bahwa tidak semua yang ada di SSL adalah browser (IMAPS dll.). Kedua, bagaimana kebanyakan HTTP yang ada hanya situs kesalahan browser? (dan tidak, browser HTTPS-only tidak pernah tertangkap, justru karena ada Net yang lebih kecil secara drastis untuk menjelajah dengan mereka). Ketiga, "mereka mendapatkan peringatan" akan berguna, jika hanya pengguna yang membacanya - dan tidak mengklik "menerima" secara membuta untuk menghilangkannya. "Mengklik menerima berarti memahami" adalah khayalan yang dibagikan pengembang.
Piskvor
1
@Piskvor, baik untuk mengetahui beberapa browser menyediakan fitur itu. Adapun HTTP, saya tidak tahu apa yang harus dilakukan (melarang HTTP jelas bukan pilihan), tetapi memiliki lebih banyak peringatan terkait keamanan dengan SSL yang ditandatangani sendiri daripada tanpa SSL sama sekali jelas salah dan merupakan peramban ' kesalahan!
Rotsor
12

Saya akan tidak setuju, sekali dengan alasan teknis yang sempit, dan sekali dengan alasan umum.

Dasar teknis yang sempit adalah bahwa OP bertanya tentang sertifikat yang ditandatangani sendiri, dan beberapa jawaban lain merujuk pada sertifikat yang ditandatangani oleh CA swasta, yang merupakan masalah yang sedikit berbeda. Namun tidak jauh berbeda, sehingga benar-benar hanya nota yang lewat.

Keberatan utama adalah bahwa saya pikir selama sertifikat yang ditandatangani secara komersial memiliki lebih dari biaya sepele - dan $ 40 per tahun bukanlah biaya sepele bagi banyak orang di planet ini - sertifikat yang ditandatangani sendiri memiliki peran besar untuk dimainkan. dalam keamanan internet, asalkan keterbatasannya diakui .

Sertifikat yang ditandatangani sendiri seperti kunci ssh dari known_hostsfile saya . Tanpa verifikasi independen, tidak dapat meyakinkan saya bahwa saya sedang berbicara dengan sistem yang saya yakini; tetapi dapat meyakinkan saya bahwa sistem yang saya ajak bicara sekarang adalah sistem yang sama dengan yang saya ajak bicara terakhir kali saya pikir saya sedang berbicara dengannya. Kami menyimpan kunci ssh setiap saat, dan saya belum pernah bertemu administrator sistem yang secara independen memverifikasi lebih dari sebagian kecil dari kunci publik dalam known_hostsfile- nya .

Sertifikat yang ditandatangani sendiri (dan, dalam hal ini, sertifikat yang ditandatangani oleh CA yang tidak berlaku umum) jauh lebih baik daripada tidak ada SSL sama sekali, selama orang-orang menyadari bahwa kecuali mereka memverifikasi mereka hanya mengamankan komunikasi untuk diri mereka sendiri, server di ujung lain dari catatan DNS, dan setiap orang yang berada di tengah saat ini di telepon. Jika mereka secara independen memverifikasi sertifikat, maka otentikasi dan enkripsi setidaknya sekuat yang diberikan oleh sertifikat yang ditandatangani oleh CA yang diakui.

Selain itu, mereka yang ingin menyajikan penggunaan sertifikat yang ditandatangani oleh CA diakui sebagai internet obat mujarab keamanan satu-dan-mungkin hanya perlu berpikir keras tentang isu-isu seperti masuknya CA penandatanganan Pemerintah Cina dalam standar Mozilla bundel , dan yang sertifikat SSL palsu yang ditandatangani oleh Comodo .

MadHatter mendukung Monica
sumber
Sayangnya, model "CA tepercaya" memang rusak (dan telah bertahun-tahun); sayangnya, itu tidak akan hilang (dan tidak ada yang benar-benar lebih baik untuk menggantikannya). Seperti biasa, SSL dan CA yang dipercaya bukanlah debu peri keamanan magis; pengguna perlu secara aktif menjaga keamanan - yang sebagian besar merupakan asumsi yang agak gila.
Piskvor
2
Apakah pengguna Anda mampu membuat evaluasi tingkat kepercayaan mereka terhadap integritas jalur mereka ke server DNS saat ini (termasuk kemungkinan keracunan cache) dan perangkat yang mereka pukul? Milik saya tidak tahu apa itu DNS, apalagi bisa membuat keputusan keamanan yang terdidik tentang koneksi mereka ke server di negara lain, terhubung ke situs lain melalui MPLS, yang terhubung ke pengguna melalui VPN klien, yang mereka di melalui wifi coffee shop tidak terenkripsi. Hindari memberi mereka tanggung jawab itu.
Shane Madden
2
@Shane Madden: Satu area di mana hal ini memungkinkan adalah frontend web administrasi - mis. PhpMyAdmin (atau, pada tingkat yang lebih rendah, SVN melalui HTTPS). Biasanya ada sejumlah pengguna yang terbatas, dan mereka mengandung sebagian kecil petunjuk . Saya tidak akan berharap kakek buyut saya membuat kepala atau ekor peringatan sertifikat SSL, tapi saya pasti mengharapkan ini dari sesama sysadmin, terutama jika itu server di bawah kendali hir. Pengguna variasi taman tidak memiliki petunjuk tentang known_hosts@MadHatter sebagai referensi.
Piskvor
8

Untuk situs eksternal, di mana pengguna tidak memiliki sertifikat CA Anda diinstal (yang merupakan kasus paling umum), ya, sertifikat yang ditandatangani sendiri memberikan rasa aman yang salah , dan karenanya lebih buruk daripada tidak berguna:

  • Pertama, tanpa sertifikat CA yang dipasang sebelumnya, bagaimana cara pengguna memverifikasi bahwa sertifikat tersebut memang berasal dari Anda, dan bukan dari penyerang? Dengan mencocokkan bidang sertifikat (CN, sidik jari, dll), tentu saja - tetapi bertentangan dengan apa? Jadi sekarang Anda memerlukan saluran samping untuk memverifikasi sertifikat - dan dalam beberapa kasus saya telah melihat bahwa, operator saluran pendukung (yang seharusnya berfungsi sebagai saluran samping untuk verifikasi) tidak memiliki petunjuk apa yang dimaksud; juga, mengoperasikan saluran samping semacam itu lebih mahal daripada mendapatkan sertifikat yang ditandatangani CA, jadi pengguna harus memercayai Anda secara membabi buta.

  • Kedua, peringatan menakutkan yang diterima pengguna menakutkan karena alasan yang baik: karena pengguna tidak dapat / tidak akan memverifikasi sertifikat yang disajikan, mereka mungkin secara aman mengirimkan data ke Elbonian Haxx0r D00dz.

  • Ketiga, dan yang terburuk, Anda membuat para pengguna merasa tidak sensitif : "Ya, mereka mengatakan kepada saya bahwa saya harus mengabaikan peringatan itu di https://mysite.example.com/ , dan landasan tidak jatuh di kepala saya, dan saya Ikan mas tidak mati juga, sooooo, itu berarti bahwa itu hanyalah kotak peringatan tanpa makna sebenarnya, jadi saya dapat mengabaikan kotak ini setiap kali saya menemukannya - bagaimanapun juga, saya mendapatkan ikon kunci yang bagus, dan itu penting. "

Dengan kata lain, tingkat perlindungan sebanding dengan HTTP biasa (kecuali untuk sniffing on-the-wire: meskipun data dienkripsi dalam perjalanan, itu adalah fitur yang agak anemia tanpa verifikasi titik akhir), tetapi perasaan perlindungannya terlalu tinggi . Analogi mobil yang buruk: "Saya memiliki ABS, jadi saya sekarang bisa mengemudi lebih aman dalam kondisi buruk" - kecuali ABS hanya ada di brosur penjualan mobil, tanpa benar-benar hadir di dalam mobil.

Bacaan yang disarankan: OWASP SSL Best practices

TL; DR: Dengan menggunakan sertifikat yang ditandatangani sendiri di situs yang menghadap publik, Anda menjadikan Net sebagai tempat yang lebih buruk, satu pengguna yang tidak mengerti pada satu waktu.

Piskvor
sumber
2
@ downvoter: Saya akan menghargai jika Anda menunjukkan di mana jawaban saya secara faktual salah ("salah" sebagai kebalikan dari "tidak nyaman, tidak nyaman, dan sulit untuk diterapkan"). Keamanan Sulit, dan "la la la aku tidak bisa mendengarmu" tidak akan melakukan apa pun untuk memperbaikinya.
Piskvor
2
Meskipun saya tidak mencatat jawaban Anda, teks tooltip pada panah bawah menunjukkan downvoting tanpa alasan selain jawaban yang tidak berguna. Saya pikir pendulum keamanan yang salah bisa berayun ke arah lain juga. Pelanggaran komodo RA baru-baru ini membuktikan bahwa "penjahat" tidak terlalu sulit untuk mendapatkan sertifikat yang sah sepenuhnya.
mahnsc
@mahnsc: Terima kasih atas pengingatnya; Saya mengetahui hal itu :-) "Apakah sertifikat SSL yang ditandatangani sendiri merupakan rasa aman yang salah?" "Ya, untuk alasan berikut ..." terdengar bermanfaat, bukan? Jadi, saya ingin tahu mengapa ini tidak terjadi: saya bisa belajar sesuatu dari pandangan yang berlawanan; dari downvote, tidak banyak.
Piskvor
1
@mahnsc: Poin bagus tentang CA yang dikompromikan. Saya tidak mengatakan bahwa daftar root CA diatur dalam batu dan tidak dapat dibackack - keamanan yang sempurna tidak ada; tetapi membutuhkan jauh lebih banyak usaha untuk mematahkan bahwa daripada menyiapkan proxy SSL menangkap pada gateway jaringan.
Piskvor
1
@mahnsc: Maksud saya, lebih mudah mengatur proxy SSL dan berharap pengguna mengklik peringatan, daripada mengatur proxy SSL dan berharap permintaan sertifikat palsu lolos melalui proses verifikasi CA. Baik mungkin, seperti yang telah kita lihat, tetapi yang pertama lebih mudah dilakukan (dan lebih sulit untuk dideteksi setelah itu, karena pengguna browser biasanya tidak menyimpan jejak audit).
Piskvor
8

Tergantung. Jika Anda pikir itu membuat Anda lebih aman maka itu meningkatkan risiko Anda ketika Anda memilih untuk melakukan hal-hal berisiko dengan rasa aman palsu Anda. Jika Anda memperlakukannya secara fungsional setara dengan HTTP, maka saya akan mengatakan Anda sedikit lebih aman.

Tanpa SSL / HTTPS, siapa pun dengan wireshark di jaringan Anda (atau jaringan lokal dari siapa pun yang masuk) dapat dengan mudah mendengarkan dan menangkap nama pengguna / kata sandi yang dikirim sebagai teks biasa.

Dengan SSL yang ditandatangani sendiri, mereka tidak dapat hanya mendengarkan, tetapi sekarang harus memalsukan situs Anda, berpotensi mengubah DNS untuk melakukan man it the middle (MITM) attack. Ini masih merupakan ancaman, tetapi secara signifikan lebih sulit bagi mereka untuk menyelesaikannya.

Masalah lain dengan menggunakan SSL yang ditandatangani sendiri adalah bahwa banyak browser memperlakukan sertifikat yang ditandatangani sendiri sebagai ancaman keamanan utama dan memperingatkan Anda sebelum memasukkan (misalnya, chrome) dengan halaman merah raksasa. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Ini bisa menjadi ketidaknyamanan utama.

Jadi intinya adalah: jika Anda menjalankan sesuatu yang tidak perlu sangat aman (misalnya, tidak ada data kartu kredit, tidak ada # jaminan sosial) dan tidak dapat membeli sertifikat yang tepat, sertifikat yang ditandatangani sendiri dapat masuk akal (untuk mengatakan mencegah pengguna jaringan lain dari mengendus informasi login mereka dengan mudah).

dr jimbob
sumber
0

Tergantung apa yang Anda maksud dengan "keamanan", dan sejauh mana itu.

Sebagai contoh, browser Anda dilengkapi dengan set CA yang diterima secara default. Ini berarti, setiap sertifikat yang dikeluarkan oleh CA ini diterima oleh browser Anda (sampai cocok dengan nama dns). Sekarang, bayangkan beberapa pemerintahan jahat memiliki CA, atau dapat memaksa CA untuk mengeluarkan sertifikat untuk situs yang Anda kunjungi. Kemudian, untuk melakukan MITM sangat mudah: mereka dapat mem-proxy koneksi Anda, mengirimkan ke browser Anda sertifikat yang mereka miliki, dan browser Anda akan menerimanya, karena itu berasal dari CA "tepercaya". Sampai mereka DNS-transparan (yang merupakan dasar untuk MITM) ini tidak masalah.

Jadi, "daftar CA yang diterima" pada dasarnya adalah lubang keamanan besar, sampai salah satu dari CA ini bekerja sama dengan beberapa pemerintahan jahat. Memiliki CA Anda sendiri jauh lebih baik.

Tentu saja, Anda dapat melakukannya di perusahaan Anda atau di server rumah Anda, karena Anda dapat menginstal sertifikat CA Anda sendiri ke klien, yang Anda kontrol juga. Di server publik, Anda tidak dapat berurusan dengan pengguna mana pun, memintanya untuk menambahkan pengecualian, atau untuk menambahkan sertifikat Anda.

Jadi, itu tergantung apa yang Anda maksud untuk "keamanan", dan ruang lingkupnya. JIKA Anda memiliki klien, PASTI, ditandatangani sendiri lebih aman, sampai Anda menginstal pada klien sendiri sertifikat CA Anda sendiri.

Tentu saja, Anda tidak dapat melakukannya di situs web publik karena Anda tidak memiliki semua klien. Jadi Anda akan mendapat bahaya dari berbagai perilaku yang tidak aman.

pengguna2402192
sumber