Jawaban:
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.
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_hosts
file 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_hosts
file- 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 .
known_hosts
@MadHatter sebagai referensi.
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.
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).
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.