Bagaimana cara memeriksa sertifikat TLS server SMTP jarak jauh?

63

Kami memiliki server Exchange 2007 yang berjalan di Windows Server 2008. Klien kami menggunakan server email vendor lain. Kebijakan keamanan mereka mengharuskan kami untuk menggunakan TLS yang dipaksakan. Ini berfungsi dengan baik sampai saat ini.

Sekarang, ketika Exchange mencoba mengirim email ke server klien, ia mencatat berikut ini:

Koneksi aman ke domain aman domain 'ourclient.com' pada konektor 'Default external mail' tidak dapat dibuat karena validasi sertifikat Transport Layer Security (TLS) untuk ourclient.com gagal dengan status 'UntrustedRoot. Hubungi administrator dari ourclient.com untuk menyelesaikan masalah, atau hapus domain dari daftar yang diamankan oleh domain.

Menghapus ourclient.com dari TLSSendDomainSecureList menyebabkan pesan berhasil terkirim menggunakan TLS oportunistik, tetapi ini adalah solusi sementara yang terbaik.

Klien adalah perusahaan internasional yang sangat besar, peka terhadap keamanan. Kontak IT kami di sana mengklaim tidak mengetahui adanya perubahan pada sertifikat TLS mereka. Saya telah memintanya berulang kali untuk mengidentifikasi otoritas yang menghasilkan sertifikat sehingga saya dapat memecahkan masalah kesalahan validasi, tetapi sejauh ini dia tidak dapat memberikan jawaban. Sejauh yang saya tahu, klien kami dapat mengganti sertifikat TLS mereka yang valid dengan sertifikat dari otoritas sertifikat internal.

Adakah yang tahu cara untuk memeriksa secara manual sertifikat TLS server SMTP jarak jauh, seperti yang dapat dilakukan untuk sertifikat server HTTPS jarak jauh di peramban web? Akan sangat membantu untuk menentukan siapa yang mengeluarkan sertifikat dan membandingkan informasi itu dengan daftar sertifikat akar tepercaya di server Exchange kami.

Skyhawk
sumber

Jawaban:

100

Anda dapat menggunakan OpenSSL. Jika Anda harus memeriksa sertifikatnya STARTTLS, lakukan saja

openssl s_client -connect mail.example.com:25 -starttls smtp

atau untuk port smtp aman standar:

openssl s_client -connect mail.example.com:465
Dan Andreatta
sumber
Cantik. Kesalahan validasi serupa di OpenSSL, tetapi jauh lebih detail. Sekarang kita tahu bahwa masalahnya tidak terbatas pada server email kami.
Skyhawk
1
@Miles: Jika Anda mencoba ini di Windows, jangan lupa bahwa openssltidak mendukung menggunakan toko sertifikat Windows, jadi itu akan selalu gagal validasi.
grawity
3
Bagaimana saya bisa melihat tanggal kedaluwarsa sertifikat server?
nimrodm
9
@nimrodm: pipa sertifikat ke "openssl x509 -text"
Dan Andreatta
2
@DanAndreatta @nimrodm Atau pipa ke openssl x509 -noout -datesuntuk output yang lebih pendek.
Skippy le Grand Gourou
9

Saya tahu ini adalah pertanyaan lama, tetapi masih merupakan pertanyaan yang relevan bahkan hingga hari ini untuk admin yang ingin mengonfirmasi validitas Sertifikat SSL di server email mereka.

Anda dapat mengunjungi https://www.checktls.com dan menjalankan tes gratis.

Ketan Patel
sumber
Ini bekerja untuk saya, lebih mudah dibaca daripada baris perintah
marijnz0r
1
Saya mengalami kesulitan menemukan tes di situs. Ada petunjuk?
Zero3
1
Ada kotak input di bagian 'Internet Secure Email is Easy' dengan tombol 'CheckTLS' dalam warna hitam.
Ketan Patel
@KetanPatel Aaaand ... Di mana saya menemukan bagian 'Internet Secure Email is Easy'?
Zero3
Sayang sekali, ini sepertinya memeriksa domain untuk server SMTP yang terdaftar dalam DNS dan menanyakannya, tapi saya ingin memeriksa server secara langsung.
kerridge0
4

Jika Anda tidak memiliki OpenSSL, Anda juga dapat menggunakan potongan Python ini:

import smtplib
import ssl

connection = smtplib.SMTP() 
connection.connect('[hostname].')
connection.starttls()
print ssl.DER_cert_to_PEM_cert(connection.sock.getpeercert(binary_form=True))

di mana [nama host] adalah server.

Sumber: https://support.google.com/a/answer/6180220

Ini menarik pustaka OpenSSL untuk Anda, yang membuat instalasi sedikit lebih mudah.

browser
sumber
Dari dokumentasi modul Python ssl : "Modul ini menggunakan perpustakaan OpenSSL." Jadi jawaban ini agak menyesatkan dalam hal apa yang sedang terjadi.
fbmd
@ fbmd Terima kasih atas umpan baliknya. Apakah ini hasil edit yang lebih baik (lihat kalimat terakhir)?
browly
Ya itu lebih baik.
fbmd