io non sono un utente cammello, ma ero curioso e giocato intorno con esso. Quello che vuoi è la firma e la crittografia S/MIME. Questo non è al momento disponibile, ma c'è uno ticket per il quale non ha mai avuto risposta da quando è stato creato a febbraio 2015. Camel ha un formato dati MIME-Multipart, crittografia PGP (ma solo simmetrica), Sign/Verify (senza crittografia) - ma non vedo alcun modo di combinarli per ottenere una busta S/MIME valida per una e-mail con segno + crittografato. Inoltre, PGP non è S/MIME e viceversa.
So come comporre e inviare tale e-mail tramite la libreria JavaMail + BouncyCastle, ho persino un codice di esempio. In teoria è possibile creare il messaggio MIME tramite JavaMail + BouncyCastle e quindi utilizzare Camel per inviarlo o creare il proprio endpoint S/MIME o il formato dati (almeno unidirezionale per il marshalling e saltare unmarshalling se non è necessario). Ma fuori dagli schemi non ho trovato il modo di farlo.
Aggiornamento:
Anche se ho messo una firma & parte MIME crittografato preconfigurato sull'endpoint di ingresso e di fare questo ...
.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"))
... e la posta è inviati, client di posta come Thunderbird non possono realmente disppare la posta perché l'endpoint di posta Camel sovrascrive lo Content-Transfer-Encoding
con un valore di 7bit
. C'è another ticket per questo problema, ma anche non risolto da giugno 2014. Quindi per il momento non è nemmeno possibile utilizzare l'endpoint della posta per inviare il messaggio dopo averlo creato tramite JavaMail e BouncyCastle. Devi anche inviarlo da solo (anche molto semplice tramite JM + BC, ma fastidioso). Al momento non è possibile utilizzare realmente l'infrastruttura Camel perché endpoint e formati di dati non sono adatti alla composizione dei messaggi S/MIME.
Non posso parlare della parte relativa al segno e alla crittografia, ma per la posta elettronica è possibile utilizzare http://camel.apache.org/mail.html. Suppongo che dal momento che il messaggio sia trattato come testo semplice, puoi utilizzare qualsiasi libreria di firma e crittografia che desideri e impostare il tipo di contenuto e la codifica. –
Attualmente utilizzo il componente standard della posta cammello. Credo di dover creare un javax.mail.internet.MimeMessage con corpo e allegati memorizzati come javax.mail.Multipart. Questo MimeMessage può essere firmato e crittografato. Quando aggiungo l'intero MimeMessage come corpo dallo scambio e lo invio con smtp, dovrebbe funzionare. – lahu89
Esiste un componente Camel specifico per le firme digitali Crypto: http://camel.apache.org/crypto-digital-signatures.html. E un altro link per tutti i problemi di sicurezza in Camel http://camel.apache.org/security.html –