nie jestem użytkownikiem Camel, ale byłem ciekaw i bawił się z nim. To czego potrzebujesz to podpisywanie i szyfrowanie S/MIME. To jest obecnie niedostępne, ale jest tam ticket, który nie otrzymał żadnej odpowiedzi, ponieważ został utworzony w lutym 2015. Camel ma format danych MIME-Multipart, szyfrowanie PGP (ale tylko symetryczne), Sign/Verify (bez szyfrowania) - ale nie widzę sposobu, aby je połączyć, aby naprawdę uzyskać prawidłową kopertę S/MIME dla podpisanego + zaszyfrowanego e-maila. Poza tym PGP nie jest S/MIME i na odwrót.
Wiem, jak skomponować i wysłać taki e-mail przez bibliotekę JavaMail + BouncyCastle, nawet mam dla niego przykładowy kod. Teoretycznie możesz utworzyć komunikat MIME za pośrednictwem JavaMail + BouncyCastle, a następnie użyć Camel do wysłania lub stworzenia własnego punktu końcowego S/MIME lub formatu danych (przynajmniej jednokierunkowy do zestawiania i pomijanie tworzenia niezałatwionych, jeśli go nie potrzebujesz). Ale po wyjęciu z pudełka nie znalazłem sposobu na zrobienie tego.
Aktualizacja:
Nawet jeśli kładę prekonfigurowany podpisaną & zaszyfrowaną część MIME na końcowym wejściowego i to zrobić ...
.setHeader("From", simple("[email protected]"))
.setHeader("To", simple("[email protected]"))
.setHeader("Subject", simple("Signed & encrypted"))
.setHeader("Content-Type", simple("application/pkcs7-mime; name=\"smime.p7m\"; smime-type=enveloped-data"))
.setHeader("Content-Transfer-Encoding", simple("base64"))
... a poczta jest wysyłane, klienci pocztowi, tacy jak Thunderbird, nie mogą naprawdę odrzucić poczty, ponieważ punkt końcowy poczty wielbłądziej nadpisuje numer Content-Transfer-Encoding
o wartość 7bit
. Jest another ticket dla tego problemu, ale również nierozwiązany od czerwca 2014. Więc na razie nie możesz nawet użyć punktu końcowego poczty, aby wysłać wiadomość po zbudowaniu jej przez JavaMail i BouncyCastle. Musisz nawet wysłać go sam (również bardzo prosty poprzez JM + BC, ale denerwujący). Obecnie nie można tak naprawdę korzystać z infrastruktury Camel, ponieważ punkty końcowe i formaty danych nie nadają się do kompozycji wiadomości S/MIME.
Nie mogę mówić o znaku i części szyfrowania, ale w przypadku wiadomości e-mail można użyć http://camel.apache.org/mail.html. Zgaduję, że ponieważ wiadomość jest traktowana jako zwykły tekst, możesz użyć dowolnej szyfrującej biblioteki szyfrującej i ustawić typ zawartości i kodowanie. –
Używam obecnie standardowego komponentu poczty wielbłądziej. Wierzę, że muszę utworzyć javax.mail.internet.MimeMessage z treścią i załącznikami przechowywanymi jako javax.mail.Multipart. Ta MimeMessage może być podpisana i zaszyfrowana. Kiedy dodaję cały MimeMessage jako ciało z giełdy i wyślę go za pomocą smtp, powinno to zadziałać. – lahu89
Istnieje komponent Camel specjalnie dla podpisów cyfrowych Crypto: http://camel.apache.org/crypto-digital-signatures.html. I kolejny link do wszystkich kwestii bezpieczeństwa w Camel http://camel.apache.org/security.html –