2016-02-29 20 views
6

Postalarımı imzalamak ve şifrelemek istiyorum.Posta imzalama ve şifreleme

Şu anki deve versiyonum 2.13.0.

ben bu amaç için kullanabileceğiniz bir deve özelliği var mı?

Vücut düz metin nedenle xmldsig olduğu kadar kullanılamaz.

sonuç bu başlıklara sahip bir posta olmalıdır Beklenen:

  • Content-Type: application/pkcs7-mim; = "Smime.p7m" adını; smime-type = zarflı-veri
  • Content-Transfer-Encoding: base64
+0

İmzayı ve şifreleme bölümünü konuşamıyorum ama e-posta için http://camel.apache.org/mail.html adresini kullanabilirsiniz. Mesaj düz metin olarak kabul edildiğinden, istediğiniz herhangi bir işaret ve şifreleme kütüphanesini kullanabilir ve içerik türünü ve şifrelemeyi ayarlayabilirsiniz. –

+0

Şu anda standart deve posta bileşenini kullanıyorum. Ben javax.mail.Multipart olarak depolanan ekleri ve ekleri ile bir javax.mail.internet.MimeMessage oluşturmalıyım inanıyorum. Bu MimeMessage imzalanabilir ve şifrelenebilir. Tüm MimeMessage'ı exchange'den gövdeye eklediğimde ve smtp ile gönderdiğimde umarım işe yaramalı. – lahu89

+0

Özellikle Crypto dijital imzaları için bir Deve bileşeni vardır: http://camel.apache.org/crypto-digital-signatures.html. Ve Camel http://camel.apache.org/security.html –

cevap

0

Bir Deve kullanıcı değilim, ama merak ediyordum ve onunla etrafında oynadı. İstediğiniz, S/MIME imzalama ve şifreleme. Bu şu anda kullanılamıyor, ancak bir Şubat 2015'te oluşturulduğundan beri hiçbir yanıt almayan bir ticket var. Camel bir MIME-Multipart veri formatına, PGP şifrelemesine (sadece simetrik) sahip, Sign/Verify (şifreleme olmadan) - ama imzalı + şifreli bir e-posta için geçerli bir S/MIME zarfı almak için bunları birleştirmenin bir yolunu göremiyorum. Ayrıca, PGP S/MIME değildir ve tersi de geçerlidir.

ben oluşturabilir ve JavaMail + BouncyCastle kitaplığı aracılığıyla tür e-posta göndermek için nasıl biliyor musunuz, hatta bunun için örnek kod var. Teorik olarak, JavaMail + BouncyCastle üzerinden MIME mesajı oluşturabilir ve daha sonra göndermek veya kendi S/MIME uç noktasını veya veri formatınızı oluşturmak için Camel'i kullanabilirsiniz (eğer ihtiyacınız yoksa, en az bir kez sıralama yapmak ve unshashalling'i atlamak). Ama kutunun dışında bunu yapmanın bir yolunu bulamadım. Ben giriş uç noktası üzerinde önceden yapılandırılmış imzalı & şifreli MIME parçası koymak ve bunu yapsan bile

...

.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")) 

... ve posta geçerli:


Güncelleme Gönderildi, Thunderbird gibi posta istemcileri gerçekten de postayı değiştiremez çünkü Camel posta uç noktası, Content-Transfer-Encoding'un 7bit değeriyle üzerine yazılır. Bu sorun için another ticket var, ancak Haziran 2014'ten beri de çözülmedi. Bu nedenle, JavaMail ve BouncyCastle aracılığıyla oluşturduktan sonra iletiyi göndermek için posta bitiş noktasını bile kullanamıyorsunuz. Bunu kendiniz bile göndermelisiniz (ayrıca JM + BC ile çok basit, ancak can sıkıcı). Şu anda, Camel altyapısını gerçekten kullanamazsınız çünkü uç noktalar ve veri formatları S/MIME mesaj kompozisyonu için uygun değildir.

+0

'daki tüm güvenlik kaygıları için başka bir bağlantı. Cevabınızı kabul ediyorum çünkü imzalama ve şifrelemenin deve'de bulunmadığını belirttiniz. Çözümü kendi cevabım ile anlattım. – lahu89

1

Gönderme sorununu çözdüm.

Ben den gibi gerekli tüm parametrelerle birlikte yeni bir MimeMessage yarattı alıcı, konu ve içeriği (beden ve ekleri ile Multipart). BouncyCastle I signed ile

ve encrypted bu MimeMessage.

Ben organı olarak çıkan MimeMessage set ve standart deve posta bitiş noktası ile gönderdi. Tüm gerekli parametreler MimeMessage'ın kendisinden değil, exchange başlıklarından seçilecektir.Ayrıca deve posta standardı kullanır alınması için ancak ön işleme olmadan alınan javax.mail.Message kendisi işleyebilir parametre mapMailMessage = yanlış ile

. Şifresini çözmek için BouncyCastle'ı da kullanacağım.

+0

Yani temelde sadece cevabımda anlattığım şeyi yapın. Yardım edebileceğime sevindim. Ama karşılığında bir soru: Mesajı tarif edildiği gibi gönderirseniz, Thunderbird veya Outlook veya Lotus Notes gibi standart posta istemcileriyle okuyabilir misiniz? Eğer onları kendi homebrew Camel çözümü ile okuyabiliyorsanız, IMO gerçek e-posta dünyasında çok fazla değmezler. – kriegaex

+0

Evet, bunları Outlook ve Gmail ile sorunsuz bir şekilde okuyabiliyorum. Şifreleme olmadan da imzalanmış postalar gönderdim ve bunlar da geçerli. Amacım geçerli imzalı ve şifreli postalar oluşturmaktı, aksi takdirde benim için işe yaramıyordu. İmzalama ve şifreleme, RFC'lere bağlı olarak BouncyCastle'den yapılır, bu nedenle her posta istemcisinden kabul edilmelidir. – lahu89

+0

Çok ilginç. Nasıl yaptığınıza dair küçük bir kod snippet'i gönderir misiniz? Sizden öğrenmek hoşuma gidiyor, tat için tit. :-) Kendi örneğimde denemek ve maual gönderme kısmını değiştirmek istiyorum. Şimdiden teşekkürler. – kriegaex