
Pada bagian 1, kami melakukan tur singkat tentang S/MIME, melihat penandatanganan dan enkripsi aliran pesan kami di berbagai klien email. Pesan S/MIME dapat ditandatangani (memberikan bukti identitas pengirim), dienkripsi (menjaga isi pesan tetap rahasia), atau keduanya.

Dalam edisi ini, kita akan:
Pasang beberapa alat command-line sederhana untuk menandatangani dan mengenkripsi email
Dapatkan kunci / sertifikat pengirim Anda untuk penandatanganan
Kirim pesan yang ditandatangani melalui SparkPost, dan lihat pesan yang diterima
Opsional, dapatkan sertifikat penerima Anda untuk enkripsi
Kirim pesan yang ditandatangani dan dienkripsi melalui SparkPost, dan lihat pesan yang diterima
Coba alat mandiri yang berguna "mimeshow" untuk melihat internal file email.
OK – mari kita mulai!
1. Instal alat
Alat demonstrasi tersedia di GitHub, lengkap dengan instruksi pemasangan. Anda mungkin melihat logo "build passing" – Travis dan pytest secara otomatis memeriksa status build. Perhatikan bahwa alat ini tidak secara resmi didukung oleh SparkPost, tetapi saya sudah mencoba membuatnya kuat dan mudah digunakan.
Jika Anda memiliki sedikit pengetahuan tentang Python dan pip, pemasangan seharusnya terasa cukup familiar. Pipfile secara otomatis mengurus ketergantungan eksternal untuk Anda. Setelah selesai, Anda dapat memeriksa semua yang terpasang dengan menjalankan
Anda seharusnya melihat teks bantuan yang ramah. Selanjutnya, kita perlu…
2. Dapatkan kunci pengirim / sertifikat Anda untuk penandatanganan
3. Kirim pesan yang ditandatangani melalui SparkPost
Sekarang mari kita gunakan domain pengirim yang sebenarnya, diatur sesuai dengan Panduan Pengguna Baru SparkPost. Kami memiliki sertifikat pengirim dan file kunci di direktori saat ini:
File tests/declaration.eml disertakan dalam proyek. Ini hanya file teks, jadi Anda dapat menyesuaikan alamat From: agar sesuai dengan domain pengirim Anda sendiri dan alamat To: agar sesuai dengan penerima uji Anda. Awal file terlihat seperti ini:
To: Bob <bob.lumreeker@gmail.com> From: Steve <steve@thetucks.com> Subject: Here is our declaration MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Saat dalam Kursus peristiwa manusia menjadi perlu …
Atur API key Anda:
Kirim emailnya:
Anda akan melihat:
Terhubung ke https://api.sparkpost.com/api/v1 Mengirim tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - dalam 1.15 detik
Satu atau dua detik kemudian, email tiba di kotak masuk Bob. Thunderbird menampilkannya dengan titik merah di amplop, menunjukkan tanda tangan pengirim yang valid.

Sukses! Selesaikan kopi Anda, Anda telah berhasil. Jika Anda mengalami masalah, periksa alamat From: di file email cocok dengan nama file .crt dan .pem Anda.
4. Mengenkripsi pesan
Untuk mengenkripsi sebuah pesan, Anda memerlukan kunci publik penerima Anda dalam bentuk sertifikat. Ini adalah file teks yang terlihat seperti ini:
Atribut Tas nama ramah: s COMODO CA Limited ID #2 localKeyID: 32 84 AB 9C 56 5C 80 C6 89 4D 40 46 DD D4 7C 71 E8 CD ED C1 subject=/emailAddress=bob.lumreeker@gmail.com issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Client Authentication and Secure Email CA -----BEGIN CERTIFICATE----- terlihat seperti karakter acak di sini -----END CERTIFICATE-----
Ada sertifikat penerima palsu untuk bob@example.com di direktori tes, jadi Anda bisa mencobanya sebelum Anda memiliki sertifikat yang nyata:
Anda akan melihat:
Anda akan melihat panjang keluaran agak lebih lama dibandingkan dengan pesan yang dienkripsi karena membawa banyak informasi tambahan serta pesan yang diacak itu sendiri.
4.1 Mengirim pesan terenkripsi dan bertanda tangan melalui SparkPost
Mari kita kirimkan pesan terenkripsi ke alamat email yang nyata. Anda dapat mengikuti proses yang sama seperti sebelumnya (tanda tangan sendiri atau penyedia seperti Comodo) untuk mendapatkan kunci publik / sertifikat untuk alamat penerima Anda sendiri. Anda hanya memerlukan file .crt – penerima tidak pernah perlu memberi Anda kunci pribadi mereka (.p12 dan .pem files).
Saya memiliki file bob.lumreeker@gmail.com.crt untuk penerima yang dituju – sesuai dengan alamat From: di file saya.
Ini perintah untuk mengirim:
Saya melihat:
Membuka koneksi ke https://api.sparkpost.com/api/v1 Mengirim tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - dalam 1.168 detik
Email muncul di Thunderbird dengan ikon tanda tangan "titik merah" dan ikon terenkripsi "gembok".

Anda bisa mengirim email berbasis HTML yang kompleks dengan tautan dan gambar dengan mudah, seperti yang ditunjukkan pada Bagian 1. Beberapa klien seperti Thunderbird meminta izin untuk menampilkan tautan dan gambar eksternal dalam pesan terenkripsi S/MIME, tetapi pesan hanya bertanda tangan tampil baik di klien termasuk Thunderbird dan Gmail:


Perhatikan drop-down menunjukkan "Alamat email terverifikasi".
Pikiran lebih lanjut & hal-hal yang perlu diperhatikan
Alat ini mengambil pendekatan yang sangat sederhana untuk mendapatkan kunci yang diperlukan – hanya mencari file bernama di direktori saat ini. Pengaturan yang lebih kompleks, seperti menyimpan semua kunci di database dapat dengan mudah ditambahkan, tetapi saya ingin kodenya sesederhana mungkin.
Anda dapat menyertakan penerima lain dengan Cc: dan Bcc: dan mereka akan dikirimkan; ini bisa berguna untuk tujuan arsip. Pesan yang ditandatangani diterima dan dapat ditampilkan oleh penerima lain lengkap dengan tanda tangan. Alat ini menghapus header Bcc: dari pesan yang diterima (seperti yang akan dilakukan oleh klien email desktop).
Untuk memastikan bahwa pesan melewati SparkPost tanpa berubah (yang dapat merusak penandatanganan), alat ini mengatur opsi API untuk pengiriman “transactional”, dengan pelacakan pembukaan dan klik dinonaktifkan.
Jika Anda menggunakan enkripsi, ingatlah bahwa alat ini mengambil satu alamat To: untuk itu. Penerima lain dapat mendekripsi isi pesan hanya jika mereka memiliki kunci pribadi penerima To:. Jika Anda hanya menggunakan penerima sekunder sebagai catatan pengiriman yang dilakukan, misalnya, itu mungkin tetap OK.
Ditandatangani, disegel, diantar... Aku milikmu
Itu adalah gambaran cepat kami tentang bagaimana menandatangani, menyegel, dan mengirim pesan S/MIME melalui SparkPost. Pengingat cepat: proyek demo tersedia di GitHub, dan saya sudah mencoba membuatnya mudah untuk dipasang dan digunakan.
Fitur bonus: menampilkan bagian MIME dengan "mimeshow"
RFC822 MIME multipart file internal cukup kompleks untuk dibaca oleh manusia. Proyek ini mencakup alat mandiri untuk mempermudah hal ini, disebut mimeshow.
Ini mengambil file email apa pun yang Anda miliki (bukan hanya yang S/MIME) dan menunjukkan struktur internalnya. Berikut contohnya:
Anda akan melihat:
Anda juga dapat menggunakannya sebagai filter untuk memberikan ringkasan yang dapat dibaca manusia dari keluaran sparkpostSMIME:
Anda akan melihat:
Akhirnya...
Untuk merangkum – kami telah menginstal beberapa alat baris perintah sederhana untuk menandatangani dan mengenkripsi email (repositori GitHub mencakup petunjuk instalasi lengkap).
Kami mendapatkan kunci pengirim / sertifikat untuk penandatanganan, dan mengirim pesan bertanda tangan melalui SparkPost. Kami mendapatkan sertifikat penerima untuk enkripsi, kemudian mengirim pesan bertanda tangan dan terenkripsi melalui SparkPost.
Terakhir, kami mencoba alat mandiri yang praktis “mimeshow” untuk melihat file internal email.
Itu saja untuk saat ini! Dalam edisi berikutnya, kami akan menunjukkan cara memperluas kemampuan S/MIME ini ke platform email aman on-premise seperti PowerMTA dan Momentum. Sampai jumpa!