S/MIME Część 2: Podpisane, Zabezpieczone i Dostarczone przez SparkPost
·
31 gru 2018

Najważniejsze informacje
Założenie: Część 2 przechodzi od teorii S/MIME do praktyki — demonstrując jak podpisywać i szyfrować e-maile wykorzystując SparkPost jako platformę dostarczania.
Cel: Wyposażenie programistów w lekkie, oparte na linii poleceń workflow do podpisywania wychodzących wiadomości, weryfikacji podpisów oraz (opcjonalnie) szyfrowania treści dla określonych odbiorców.
Najważniejsze punkty:
Installacja: Zainstaluj narzędzia demo źródłowego z GitHub (z automatycznymi testami Travis + pytest). Pipfile obsługuje wszystkie zależności Pythona.
Klucze nadawcy:
Utwórz samosigned lub wydany przez CA certyfikat (
.p12) dla swojej tożsamości e-mail.Podziel go na pliki prywatne (
.pem) i publiczne (.crt) do użycia przez narzędzie podpisujące.
Podpisywanie:
Użyj załączonego skryptu
sparkpostSMIME.pydo podpisywania wiadomości testowych (np.tests/declaration.eml).Potwierdź podpisy wizualnie w klientach takich jak Thunderbird (ikonka czerwonego kropka).
Szyfrowanie:
Uzyskaj publiczny certyfikat każdego odbiorcy (
.crt).Uruchom narzędzie ponownie, aby wygenerować podpisaną + zaszyfrowaną wiadomość.
Odbiorcy mogą weryfikować i deszyfrować używając swoich kluczy prywatnych.
Dostawa przez SparkPost:
Skonfiguruj ważną domenę nadawczą i klucz API.
Wysyłaj wiadomości przez API SparkPost z wyłączonym śledzeniem, aby zachować integralność.
Użyteczność bonusowa – mimeshow:
Wyświetla czytelną dla człowieka strukturę komunikatów MIME RFC822 do debugowania lub inspekcji.
Praktyczne wskazówki:
Utrzymuj nazwy plików zgodne z adresem From:.
Unikaj modyfikacji treści wiadomości po podpisaniu.
Używaj Bcc tylko do kopii archiwalnych — ci odbiorcy nie mogą deszyfrować, jeśli wiadomość jest zaszyfrowana do jednego adresu To.
Podsumowanie pytań i odpowiedzi
Dlaczego używać podpisywania S/MIME?
Uwierzytelnia nadawcę i zapewnia integralność wiadomości — klienci tacy jak Thunderbird pokazują wizualny wskaźnik, gdy podpis jest ważny.
Jak mogę uzyskać mój certyfikat nadawcy?
Możesz samodzielnie podpisać certyfikat za pomocą OpenSSL (do testów) lub uzyskać zaufany certyfikat od dostawców, takich jak Comodo (bezpłatny do użytku niekomercyjnego).
Czy mogę zaszyfrować wiadomości dla wielu odbiorców?
Tylko jeśli masz każdy klucz publiczny odbiorcy. Skrypt demo domyślnie szyfruje do pojedynczego adresu To.
Jakie zabezpieczenia chronią podpisy przed zniszczeniem w transporcie?
Narzędzie ustawia opcje API SparkPost dla wysyłania transakcyjnego i wyłącza śledzenie otwarć/kliknięć, dzięki czemu ładunek przechodzi bez zmian.
Jaką rolę pełni mimeshow?
Parses surowe pliki e-mail i drukuje ich wieloczęściową strukturę — przydatne do inspekcji podpisów S/MIME, załączników i nagłówków.
Co dalej w serii?
Część 3 rozszerza te możliwości S/MIME na lokalne platformy zabezpieczonego e-maila, takie jak PowerMTA i Momentum.
W części 1 mieliśmy szybki przegląd S/MIME, przyglądając się podpisywaniu i szyfrowaniu naszych strumieni wiadomości w różnych klientach pocztowych. Wiadomości S/MIME mogą być podpisane (co daje dowód tożsamości nadawcy), szyfrowane (utrzymując treść wiadomości w tajemnicy) lub obu.

W tej części zrobimy:
Zainstalujemy kilka prostych narzędzi wiersza poleceń do podpisywania i szyfrowania wiadomości e-mail
Otrzymamy klucz/ certyfikat nadawcy do podpisywania
Wyślemy podpisaną wiadomość przez SparkPost i przyjrzymy się otrzymanej wiadomości
Opcjonalnie, otrzymamy certyfikat odbiorcy do szyfrowania
Wyślemy podpisaną i zaszyfrowaną wiadomość przez SparkPost i przyjrzymy się otrzymanej wiadomości
Przetestujemy przydatne samodzielne narzędzie „mimeshow” do przeglądania wewnętrznej zawartości plików e-mail.
OK – zaczynajmy!
Funkcja bonusowa: wyświetlanie części MIME za pomocą „mimeshow”
1. Zainstaluj narzędzia
2. Uzyskaj swój klucz / certyfikat nadawcy do podpisywania
3. Wyślij podpisaną wiadomość za pomocą SparkPost
4. Szyfrowanie wiadomości
Dalsze myśli i rzeczy, o których warto pamiętać
To narzędzie stosuje bardzo prostą metodę pobierania niezbędnych kluczy – po prostu szuka nazwanych plików w bieżącym katalogu. Bardziej złożone układy, takie jak przechowywanie wszystkich kluczy w bazie danych, mogłyby być łatwo dodane, ale chciałem, aby kod był jak najprostszy.
Możesz dodać innych odbiorców za pomocą Cc: i Bcc: i będą oni dostarczani; może to być przydatne do celów archiwalnych. Podpisane wiadomości są odbierane i mogą być wyświetlane przez innych odbiorców w komplecie z podpisem. Narzędzie usuwa nagłówek Bcc: z dostarczonej wiadomości (tak jak zrobiłby to klient pocztowy na komputerze).
Aby zapewnić, że wiadomości przechodzą przez SparkPost niezmienione (co mogłoby zepsuć podpisywanie), narzędzie ustawia opcje API dla „transakcyjnego” wysyłania, z wyłączonym śledzeniem otwarć i kliknięć.
Jeśli używasz szyfrowania, pamiętaj, że narzędzie pobiera pojedynczy adres To: na to. Inni odbiorcy mogą dekodować treść wiadomości tylko wtedy, gdy mają prywatny klucz odbiorcy To:. Jeśli używasz dodatkowych odbiorców jako zapisu dokonanych dostaw, na przykład, może to być w porządku.
Podpisane, zapieczętowane, dostarczone…jestem Twój
Oto nasze szybkie podsumowanie, jak podpisywać, pieczętować i dostarczać wiadomości S/MIME za pomocą SparkPost. Szybkie przypomnienie: projekt demo jest dostępny na GitHub, a starałem się, aby jego instalacja i użycie były łatwe.










