Apakah praktik yang buruk untuk menggunakan sertifikat SSL yang ditandatangani sendiri?

29

Sertifikat SSL cukup mahal untuk perorangan, terutama jika Anda perlu mengamankan subdomain yang berbeda. Saya mempertimbangkan untuk menggunakan sertifikat yang ditandatangani sendiri, karena fokus utama saya adalah untuk mengamankan koneksi, dan bukan untuk mengotentikasi diri saya.

Namun, beberapa browser menampilkan peringatan buruk ketika menemukan sertifikat semacam itu. Apakah Anda akan mencegah penggunaan sertifikat yang ditandatangani sendiri (misalnya untuk aplikasi web kecil atau halaman admin situs web kecil)? Atau tidak apa-apa dalam beberapa kasus?

Wookai
sumber

Jawaban:

14

Secara umum, buruk untuk menggunakan sertifikat yang ditandatangani sendiri. Jika Anda melakukannya maka Anda menjalankan risiko orang akan meninggalkan situs Anda ketika mereka mendapat peringatan tentang sertifikat Anda yang buruk. Lebih penting lagi, Anda menghadapi risiko lebih besar untuk meminta seseorang melakukan serangan injeksi di mana mereka menggunakan sertifikat yang ditandatangani sendiri di tempat Anda dan pengunjung tidak akan tahu yang lebih baik.

Lihat artikel di sini, http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.html untuk info lebih lanjut.

Ben Hoffman
sumber
14

Seperti yang dikatakan RandomBen, sertifikat yang ditandatangani sendiri umumnya disukai karena alasan yang dia jelaskan. Tetapi ada satu situasi di mana mereka baik-baik saja: jika sekelompok orang yang perlu mengirimkan data sensitif ke situs web Anda kecil dan terbatas, mereka semua agak kompeten secara teknis, dan Anda dapat berkomunikasi dengan mereka semua. Jika demikian, Anda dapat memberi setiap orang rincian sertifikat, lalu mereka dapat memeriksa sertifikat secara manual saat mereka pergi ke situs Anda dan menambahkan pengecualian keamanan jika perlu.

Sebagai contoh ekstrem, pada VPS pribadi saya, saya memiliki subdomain administratif, yang hanya boleh diakses oleh saya. Tidak akan ada masalah mengamankan domain itu dengan sertifikat yang ditandatangani sendiri karena saya dapat memeriksa secara manual bahwa sertifikat server yang digunakan untuk mengamankan koneksi adalah sama dengan yang saya instal di server.

Dalam kasus di mana sertifikat yang ditandatangani sendiri tidak akan berfungsi atau Anda lebih memilih yang "asli", saya sarankan Let's Encrypt , sebuah proyek yang dimulai oleh Kelompok Penelitian Keamanan Internet dan didukung oleh perusahaan internet besar, yang menawarkan sertifikat SSL di tanpa biaya. Mereka dapat melakukan ini karena proses verifikasi yang mereka gunakan sepenuhnya otomatis, dan pada kenyataannya server web yang mendukung protokol ACME mereka (seperti Caddy , yang saat ini saya gunakan) dapat memperoleh sertifikat sepenuhnya sendiri. Let's Encrypt tidak memverifikasi bahwa Anda, sebagai pribadi, adalah seperti yang Anda katakan; itu hanya memverifikasi bahwa server web Anda mampu menyajikan konten pada domain yang diklaimnya. Let's Encrypt didukung oleh semua browser utama, tetapi diketahui bahwa verifikasi minimal, jadi jika Anda menjalankan sesuatu seperti situs e-commerce atau apa pun di mana orang akan mengirimkan informasi sensitif, Anda mungkin harus mengeluarkan uang untuk mendapatkan sertifikat dengan tingkat validasi yang lebih tinggi.

Aku digunakan untuk merekomendasikan sertifikat startssl bebas dari Startcom bagi orang-orang yang tidak ingin membayar untuk validasi, tapi sekarang tidak lagi. StartCom diam-diam diakuisisi oleh WoSign pada tahun 2016 dan kemudian mengeluarkan sertifikat tidak sah untuk beberapa domain. Akibatnya, browser utama menghapus dukungan mereka untuk sertifikat StartCom. (Sejauh yang saya tahu, IE tidak pernah mendukungnya.) Bagaimanapun, Let's Encrypt jauh lebih nyaman.

David Z
sumber
+1 untuk paragraf pertama. Saya menggunakan sertifikat yang ditandatangani sendiri untuk Webmin di server saya karena hanya saya dan perancang yang menggunakannya, tetapi saya tidak akan merekomendasikan melakukannya untuk penggunaan umum.
DisgruntledGoat
3

Hal ini tidak praktek buruk untuk menggunakan sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri memiliki banyak tujuan praktis yang tidak masuk akal untuk menggunakan sertifikat yang ditandatangani CA.

Misalnya, di banyak server saya, saya memiliki pengaturan login tanpa kata sandi. Ini adalah server yang sangat sering saya hubungkan, dan terkadang membuat beberapa koneksi SSH terbuka, sehingga sulit untuk mengetik nama pengguna dan kata sandi saya setiap saat.

Sebagai gantinya, saya menggunakan sertifikat SSL yang ditandatangani sendiri yang saya hasilkan pada masing-masing mesin klien saya (workstation di kantor, laptop, dan workstation rumah saya). Pengaturan semacam ini memungkinkan saya untuk menggunakan kata sandi yang cukup panjang, aman, dan benar-benar unik untuk setiap server saya tanpa memengaruhi produktivitas. Dan karena saya memiliki akses langsung ke server tempat saya dapat menginstal kunci publik untuk setiap sertifikat, tidak ada gunanya saya menggunakan sertifikat yang ditandatangani CA.

Saya dapat mengatur CA root saya sendiri yang dengannya saya dapat menandatangani semua sertifikat penggunaan internal untuk perusahaan kami, dan dengan cara ini saya hanya perlu menginstal satu kunci publik di setiap server. Namun, organisasi kami belum berkembang ke ukuran yang benar-benar mengharuskan ini, dan untuk keperluan HTTP aman, ini akan tetap sama dengan memiliki sertifikat yang ditandatangani sendiri.

Demikian juga, sertifikat yang ditandatangani sendiri sering digunakan untuk koneksi email, tanda tangan PGP, dan koneksi server-ke-server di mana itu sepele untuk pra-pertukaran kunci publik. Dalam banyak kasus ini, ini sebenarnya lebih aman daripada mengandalkan rantai sertifikat yang dapat dikompromikan pada titik mana pun dalam rantai.

Lèse majesté
sumber
Saya tidak mengerti mengapa Anda menggunakan sertifikat SSL dalam kasus Anda? Anda menyebutkan tidak ingin mengetikkan kata sandi beberapa kali: Anda cukup menggunakan kunci pribadi SSH dengan ssh-agent, untuk secara otomatis mengotentikasi Anda di setiap server tanpa harus mengetikkan kata sandi lebih dari satu kali.
Wookai
@Wookai: Itu akan menjadi salah satu cara untuk melakukannya untuk SSH, tetapi menggunakan sertifikat klien SSL adalah metode otentikasi klien yang lebih umum. Saya juga menggunakan sertifikat klien saya untuk otentikasi HTTPS serta email, dan jika saya memilih untuk mengatur CA internal nanti, itu menjadi lebih fleksibel / kuat. Pada saat itu, saya tidak perlu menginstal kunci pribadi untuk setiap klien / pengguna. Itu hanya solusi IMO yang lebih kuat.
Lèse majesté
2

Jika Anda mengamankan beberapa subdomain, Anda mungkin ingin menggunakan sertifikat wildcard , yang (tergantung pada berapa banyak subdomain yang Anda amankan) dapat bekerja jauh lebih murah daripada membeli satu per domain; misalnya RapidSSL memiliki wildcard yang lebih murah daripada sertifikat individual begitu Anda memiliki empat domain yang digunakan.

Cebjyre
sumber