Apa nama host yang seharusnya berisi sertifikat SSL untuk server SMTP?

22

Saya memiliki server foo.example.com di 192.0.2.1

Ini menjalankan exim untuk menerima email untuk beberapa domain saya.

Domain saya masing-masing memiliki catatan MX yang menunjuk ke mx.example.com, yang dipecahkan menjadi 192.0.2.1

Jika saya ingin membuat eksim menawarkan enkripsi TLS untuk koneksi email masuk, nama host apa yang harus saya masukkan ke dalam sertifikat SSL?

  • foo.example.com karena itu yang akan dikatakan server di HELO?
  • mx.example.com karena itulah nama host yang akan disambungkan oleh klien?

http://www.checktls.com menyarankan bahwa yang terakhir benar, tetapi saya tidak dapat menemukan jawaban yang pasti.

David North
sumber
Dalam HTTP + SSL Anda memerlukan sertifikat wildcard (* .example.com) untuk melayani beberapa server virtual berbasis nama. Saya tidak yakin tentang SMTP + SSL tetapi saya menduga Anda akan menemukan batasan yang sama. Cara mengatasinya dengan HTTP adalah mengikat setiap server virtual ke IP yang berbeda dan menggunakan sertifikat unik untuk masing-masing.
Chris Nava
1
Secara praktis, untuk server MX, tidak masalah apa pun yang Anda tetapkan untuk nama umum Anda.
cnst

Jawaban:

18

Ini sebenarnya tidak didefinisikan secara eksplisit di mana saja, dan apakah server harus "dipercaya" atau tidak tergantung pada klien (yang tentu saja bisa menjadi server email lain) yang terhubung dengannya; mengutip dari RFC yang relevan ( RFC 2487 ):

Jika klien SMTP memutuskan bahwa tingkat otentikasi atau
privasi tidak cukup tinggi untuk melanjutkan, itu HARUS mengeluarkan
perintah SMIT QUIT segera setelah negosiasi TLS selesai.
Jika server SMTP memutuskan bahwa tingkat otentikasi atau
privasi tidak cukup tinggi untuk melanjutkan, itu HARUS membalas
setiap perintah SMTP dari klien (selain dari perintah QUIT) dengan
kode balasan 554 (dengan kemungkinan teks string seperti itu sebagai "Perintah
ditolak karena kurangnya keamanan").

Keputusan apakah atau tidak percaya keaslian
pihak lain dalam negosiasi TLS adalah masalah lokal. Namun, beberapa
aturan umum untuk keputusan tersebut adalah:

- A SMTP client would probably only want to authenticate an SMTP
  server whose server certificate has a domain name that is the
  domain name that the client thought it was connecting to.

Apa artinya ini pada dasarnya adalah, ketika server menawarkan enkripsi TLS menggunakan sertifikat yang diberikan, keputusan untuk menerima atau menolak sepenuhnya tergantung pada bagian lain, yang mungkin ingin nama pada sertifikat itu sama dengan yang terhubung, tetapi dapat menerimanya dengan sangat baik bahkan jika itu tidak cocok.

Tapi tunggu, masih ada lagi. Mengutip lagi dari RFC yang sama:

Setelah menyelesaikan jabat tangan TLS, protokol SMTP diatur ulang ke
keadaan awal (keadaan dalam SMTP setelah server mengeluarkan sebuah
salam siap pakai layanan 220 ). Server HARUS membuang segala pengetahuan yang
diperoleh dari klien, seperti argumen ke perintah EHLO,
yang tidak diperoleh dari negosiasi TLS itu sendiri. Klien
HARUS membuang segala pengetahuan yang diperoleh dari server, seperti daftar
ekstensi layanan SMTP, yang tidak diperoleh dari
negosiasi TLS itu sendiri. Klien HARUS mengirim perintah EHLO sebagai
perintah pertama setelah negosiasi TLS berhasil.

Jadi, apa yang dikatakan server sebagai tanggapan terhadap HELO / EHLO sebelum jabat tangan TLS tampaknya tidak penting sama sekali.

Dalam pengalaman saya, sertifikat yang ditandatangani sendiri berfungsi cukup baik di server surat yang menghadap Internet, yang berarti server surat lain bahkan tidak repot-repot memvalidasi mereka, mereka hanya akan dengan senang hati menerima apa pun yang dapat memberikan enkripsi TLS, terlepas dari penerbitan nama otoritas atau subjek.

Massimo
sumber
11

MTA yang mengirimkan surat ke domain Anda akan mencari data MX (yang akan menghasilkan nama host), dan kemudian mencari data A untuk nama host itu. Hostname yang terhubung dengan itu adalah nama host MX, dan itulah yang akan diverifikasi terhadap nama umum sertifikat SSL. Memverifikasi nama host HELO tidak masuk akal karena server dapat memberikan nama host HELO yang diinginkan - itu tidak memberikan keamanan tambahan.

Karena itu, memverifikasi sertifikat SSL secara ketat ketika mengirimkan surat tidak terlalu berguna saat ini, karena MTA akan (hampir selalu) mundur ke pengiriman non-SSL, karena itulah cara kerja SMTP saat ini. Oleh karena itu, konfigurasi yang masuk akal adalah menggunakan SSL jika server MX menawarkannya, terlepas dari apakah sertifikat SSL memverifikasi atau tidak (karena enkripsi tanpa otentikasi lebih baik daripada tidak ada enkripsi dan tidak ada otentikasi). Karena itu Anda sebaiknya menggunakan sertifikat yang ditandatangani sendiri untuk tujuan ini.

Mgorven
sumber
Ya, dan untuk alasan ini, sebenarnya tidak masalah sama sekali dengan Nama Umum diatur, atau apakah itu disetel sama sekali.
cnst
7

Tugas memverifikasi sertifikat server dan cocok dengan nama host server adalah murni peran klien, untuk protokol apa pun yang menggunakan SSL / TLS.

Dengan demikian, nama host dalam sertifikat harus cocok dengan nama yang coba diakses oleh klien.

Ketika koneksi SSL / TLS dimulai di depan (SMTPS), server tidak memiliki cara untuk melihat apa yang dikatakan pesan HELO sebelum koneksi dibuat, jadi ia harus menggunakan yang dengannya ia membuat permintaan.

Ketika menggunakan SSL / TLS setelahnya STARTTLS, klien masih berniat untuk berbicara dengan server yang sudah dikonfigurasi, jadi itu yang masih harus diperiksa. Gagal yang memungkinkan serangan MITM:

  • C-> S: Halo, saya Alice, saya ingin berbicara dengan Bob.
  • S-> C: Hai, saya Chuck, ini adalah sertifikat saya untuk Chuck.
  • C-> S: Oh ya, sertifikat Anda memang berlaku untuk Chuck. Mari kita lanjutkan.
  • ... Tentu saja ada kekurangan di sana, karena Alice menginginkan komunikasi yang aman dengan Bob.

Dalam kedua kasus, itu adalah alamat MX yang harus digunakan.

Aturan pencocokan nama host baru-baru ini telah dikumpulkan lintas protokol di RFC 6125 , tetapi beberapa klien mengimplementasikannya secara penuh (ini lebih merupakan praktik terbaik RFC daripada perubahan lengkap, dan itu masih sangat baru).

Dalam lampirannya , ini meringkas apa yang ada tentang SMTP sebelumnya (diambil dari RFC 3207 dan RFC 4954 ). Khususnya " Klien TIDAK HARUS menggunakan segala bentuk nama host server yang berasal dari sumber jarak jauh yang tidak aman (misalnya, pencarian DNS tidak aman). " (Yang berlaku untuk spanduk server tentu saja). Terlepas dari ini, aturan warisan SMTP sedikit lebih santai daripada HTTPS tentang Nama Alternatif Subjek ( harus bukannya harus digunakan).

Cara modern jelas menempatkan nama host dalam entri DNS Alternatif Nama Subjek. Penggunaan wildcard juga tidak disarankan .

Bruno
sumber
Akan lebih baik jika sertifikat itu untuk domain email - maka DNSSEC pada dasarnya tidak diperlukan untuk menghindari MITM.
Andreas Krey
1

Saya pikir yang terbaik adalah menyalin apa yang dilakukan dalam praktek. Saya telah memeriksa alamat email yahoo.com menggunakan http://checktls.com Semoga di yahoo, mereka menggunakan domain yang berbeda untuk nama host mereka dan untuk domain mx mereka. Jadi, nama host mereka adalah yahoo.com dan domain mx mereka berakhir dengan yahoodns.net

dig mx yahoo.com gives mta6.am0.yahoodns.net. among others

Hasil checktls: sertifikat SSL CN = MX domain (* .yahoodns.net)

Saya melakukan hal yang sama dengan cisco dan saya mendapatkan hasil yang sama.

Nicolas Guérinet
sumber
0

Ke dalam enkripsi SSL / TLS, klien selalu memeriksa korespondensi antara nama host "nyata" / "dideklarasikan" pada mesin jarak jauh dan informasi yang ada di dalam sertifikat.

Jadi, Anda mungkin harus mengatur foo.example.com atau membuat sertifikat wildcard ;-)

Dr I
sumber
2
Saya pikir itu tidak benar.
Mgorven
Saya akan meningkatkan jawaban saya. Di server email saya, jika saya ingin memiliki hubungan antara server host saya bernama misalnya: mx1.dn.tld dan server lain bernama misalnya: foo.dn.tld Di sini, saya harus membuat Sertifikat SSL dengan nama host mx1 .dn.tld. Sekarang, jika Anda memiliki server email yang Anda inginkan dapat diakses dari layanan lain menggunakan akses standar eksternal seperti IMAP, Anda akan menetapkan alias DNS berikut: imap.dn.tld yang menautkan ke IP atau nama host lain (mx1. dn.tld misalnya). dan kemudian menghasilkan Sertifikat SSL menggunakan nama host imap.dn.tld ini.
Dr I
2
Ya, tetapi pertanyaannya bukan tentang akses IMAP / POP3, itu tentang pengiriman surat dengan SMTP.
Mgorven