Bisakah Https bekerja tanpa sertifikat?

9

Baru-baru ini tim infrastruktur kami memberi tahu tim pengembangan kami bahwa Anda tidak memerlukan sertifikat untuk https. Mereka menyebutkan bahwa satu-satunya manfaat membeli sertifikat adalah memberikan ketenangan pikiran kepada konsumen bahwa mereka terhubung ke situs web yang benar.

Ini bertentangan dengan semua yang saya asumsikan tentang https.

Saya membaca wikipedia dan menyebutkan Anda perlu baik sertifikat terpercaya atau sertifikat yang ditandatangani diri untuk mengkonfigurasi https.

Apakah mungkin untuk mengkonfigurasi IIS untuk merespon https tanpa setiap sertifikat?

Menandai
sumber
7
Anda mungkin menemukan bahwa ini hanya masalah komunikasi. Server Anda mungkin memiliki sertifikat yang ditandatangani sendiri, siap berangkat. Kebetulan, peringatan ini yang Anda hindari dengan menggunakan sertifikat tepercaya publik: m86security.com/kb/article.aspx?id=13446 Hal itu mungkin dapat diterima di lingkungan Anda atau tidak. Saya akan mengatakan ini lebih dari sekedar ketenangan pikiran - di situs web publik itu adalah tanda profesionalisme!
Dan
5
Sertifikat yang ditandatangani sendiri memberi Anda enkripsi, tetapi sertifikat itu tidak dapat melindungi dari manusia di serangan tengah, karena Anda mendapatkan peringatan yang sama tentang sertifikat yang tidak sah atau tidak diverifikasi untuk ditandatangani sendiri seperti yang Anda lakukan pada beberapa orang yang mencegat lalu lintas, mendekripsi, mencuri data, dan mengenkripsi ulang untuk kembali ke klien.
Bart Silverstrim
1
"Sertifikat yang ditandatangani sendiri memberi Anda enkripsi, tetapi tidak dapat melindungi dari manusia dalam serangan tengah [...]", kecuali jika pengguna dapat mempercayai sertifikat yang ditandatangani sendiri secara eksplisit oleh beberapa mekanisme keluar-band, yang merupakan hanya mungkin secara realistis untuk basis pengguna kecil yang mengenal Anda melalui mekanisme out-of-band. Tidak mungkin, memang.
Bruno
Atau jika mereka memercayainya pertama kali, mereka akan diperingatkan jika itu berubah di masa depan. Sama seperti tanda tangan SSH, sungguh.
mfinni
1
Secara teknis SSL / TLS tidak memerlukan sertifikat untuk mengamankan saluran komunikasi. Bahkan SSL / TLS dapat menggunakan mekanisme lain untuk mengamankan saluran: sertifikat pgp, nama pengguna / kata sandi, kunci yang dibagikan sebelumnya, atau "anonim" (tidak ada otentikasi sama sekali). Demikian pula SSL / TLS tidak menjamin enkripsi, ada banyak cipher yang dapat digunakan, termasuk "null" (tidak ada enkripsi sama sekali). Dan ada opsi serupa untuk otentikasi digest. Jadi itu bagus, tapi program apa yang menggunakan semua itu: pada dasarnya tidak ada sama sekali, pasti tidak ada server atau perangkat lunak browser utama (semuanya memerlukan sertifikat).
Chris S

Jawaban:

24

Tidak. Anda harus memiliki sertifikat. Itu bisa ditandatangani sendiri, tetapi harus ada pasangan kunci publik / pribadi di tempat untuk bertukar kunci simetris sesi antara server dan klien untuk mengenkripsi data.

Driftpeasant
sumber
Anonymous Diffie-Hellman, seperti disebutkan dalam jawaban lain, memang mengizinkan koneksi tanpa sertifikat - tetapi versi OpenSSL modern biasanya dikompilasi tanpa dukungan ADH.
Brandon Rhodes
12

Singkatnya, tidak, tetapi mungkin ada kasus yang halus tergantung pada bagaimana Anda ingin menggunakan sistem.

HTTPS adalah HTTP over SSL / TLS, dan Anda dapat menggunakan SSL / TLS tanpa sertifikat atau dengan sertifikat jenis lain selain X.509 .

  • Suite cipher anonim: mereka dapat memberikan enkripsi, tetapi tanpa otentikasi. Agak tidak berguna sejauh menyangkut keamanan ... Mengutip RFC 4346 : " Diffie-Hellman anonim sangat tidak dianjurkan karena tidak dapat mencegah serangan manusia di tengah. "
  • Kunci yang dibagikan sebelumnya : ia memiliki mekanisme sendiri untuk memverifikasi identitas jarak jauh, tetapi sifat kunci yang dibagikan tersebut membawa serangkaian masalahnya sendiri (khususnya penyebaran terbatas).
  • Suite cipher Kerberos : klien dapat memverifikasi identitas server terhadap nama utama Kerberos.

Sebenarnya, spesifikasi HTTP over TLS mengatakan sebagai berikut:

Secara umum, permintaan HTTP / TLS dihasilkan oleh mendereferensi URI. Akibatnya, nama host untuk server diketahui oleh klien. Jika nama host tersedia, klien HARUS memeriksanya dengan identitas server seperti yang disajikan dalam pesan Sertifikat server, untuk mencegah serangan man-in-the-middle.

Jika klien memiliki informasi eksternal mengenai identitas server yang diharapkan, pemeriksaan hostname DAPAT dihilangkan. (Misalnya, klien mungkin menghubungkan ke mesin yang alamat dan nama hostnya dinamis tetapi klien tahu sertifikat yang akan disajikan server.) Dalam kasus seperti itu, penting untuk mempersempit ruang lingkup sertifikat yang dapat diterima sebanyak mungkin dalam Untuk mencegah pria di tengah serangan. Dalam kasus khusus, mungkin pantas bagi klien untuk mengabaikan identitas server, tetapi harus dipahami bahwa ini membuat koneksi terbuka untuk serangan aktif.

Singkatnya, ini jelas dimaksudkan untuk penggunaan dengan sertifikat X.509 (itu jelas merujuk RFC 2459, kemudian digantikan oleh RFC 3280 dan 5280: PKI dengan sertifikat X.509).

Mungkin ada tepi kasus ketika Anda menggunakan suite cipher Kerberos. Mungkin masuk akal untuk memperlakukan tiket layanan Kerberos server dapat dianggap memiliki tujuan yang sama dengan sertifikat X.509 dalam HTTPS biasa, untuk verifikasi identitas pihak jarak jauh. Itu tidak cukup sesuai dengan aturan RFC 2818 (meskipun mungkin jatuh di bawah " Jika klien memiliki informasi eksternal mengenai identitas server yang diharapkan, cek nama host DAPAT dihilangkan. "), Tetapi itu tidak akan sepenuhnya absurd. Ini dikatakan, saya tidak berpikir browser biasa mendukung suites TLS Kerberos secara umum (angka dapat mendukung Kerberos melalui otentikasi SPNEGO, tapi itu tidak terkait). Selain itu, ini juga hanya akan berfungsi di lingkungan di mana menggunakan Kerberos cocok.

" [Memberikan] ketenangan pikiran konsumen bahwa mereka terhubung ke situs web yang benar " sebenarnya adalah salah satu persyaratan utama untuk mengamankan komunikasi antara mereka dan server Anda. Gunakan sertifikat yang dapat mereka verifikasi, dengan konvensi penamaan yang sesuai (RFC 2818 atau lebih baru RFC 6125).

Bruno
sumber
1

Anda TIDAK BISA menggunakan https tanpa sertifikat apa pun. Anda perlu membeli sertifikat tepercaya atau membuat sertifikat yang ditandatangani sendiri untuk pengujian. Bagian dari mengonfigurasi server web Anda untuk menggunakan https adalah dengan mengarahkannya ke file kunci yang benar. Tentu saja, ini berlaku untuk semua server web tidak hanya untuk iis.

Khaled
sumber
Untuk menguji apakah OpenSSL Anda dapat mendukung koneksi tanpa sertifikat, jalankan openssl ciphersdan cari ADHprotokol seperti ADH-AES256-SHA- jika protokol tersebut ada, maka Anda dapat secara teknis mengatur koneksi tanpa melibatkan sertifikat.
Brandon Rhodes