Tôi không phải là một người sử dụng Camel, nhưng tôi đã tò mò và chơi đùa với nó. Những gì bạn muốn là ký và mã hóa S/MIME. Điều này hiện không khả dụng, nhưng có ticket cho nó không bao giờ có bất kỳ phản hồi nào kể từ khi được tạo vào tháng 2 năm 2015. Camel có định dạng dữ liệu MIME-Multipart, mã hóa PGP (nhưng chỉ đối xứng), Ký/Xác minh (không mã hóa) - nhưng tôi không thấy cách nào để kết hợp chúng để thực sự có được một phong bì S/MIME hợp lệ cho một e-mail được mã hóa + đã ký. Bên cạnh đó, PGP không phải là S/MIME và ngược lại.
Tôi biết cách soạn và gửi e-mail như vậy qua thư viện JavaMail + BouncyCastle, tôi thậm chí còn có mã mẫu cho nó. Về mặt lý thuyết, bạn có thể tạo thông điệp MIME qua JavaMail + BouncyCastle và sau đó sử dụng Camel để gửi hoặc tạo điểm cuối hoặc định dạng dữ liệu S/MIME của riêng bạn (ít nhất một cách để marshalling và bỏ unmarshalling nếu bạn không cần nó). Nhưng tôi không tìm được cách để làm điều đó.
Cập nhật:
Thậm chí nếu tôi đặt một ký & mã hóa phần MIME cấu hình sẵn trên thiết bị đầu cuối đầu vào và thực hiện điều này ...
.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"))
... và qua đường bưu điện là khách hàng gửi thư, như Thunderbird không thể thực sự làm phiền thư vì điểm kết thúc thư Camel ghi đè số Content-Transfer-Encoding
bằng giá trị 7bit
. Có another ticket cho vấn đề này, nhưng cũng chưa được giải quyết kể từ tháng 6 năm 2014. Vì vậy, trong thời gian này bạn thậm chí không thể sử dụng điểm cuối thư để gửi thư sau khi bạn đã xây dựng nó thông qua JavaMail và BouncyCastle. Bạn thậm chí phải gửi nó một mình (cũng rất đơn giản thông qua JM + BC, nhưng gây phiền nhiễu). Vì vậy, hiện tại bạn không thể thực sự sử dụng cơ sở hạ tầng Camel vì các thiết bị đầu cuối và định dạng dữ liệu không phù hợp với thành phần tin nhắn S/MIME.
Tôi không thể nói về phần ký hiệu và mã hóa nhưng đối với e-mail bạn có thể sử dụng http://camel.apache.org/mail.html. Tôi đoán vì tin nhắn được coi là văn bản thuần túy, bạn có thể sử dụng bất kỳ thư viện mã hóa và dấu hiệu nào bạn muốn và đặt loại nội dung và mã hóa. –
Tôi hiện sử dụng thành phần thư lạc đà chuẩn. Tôi tin rằng tôi phải tạo một javax.mail.internet.MimeMessage với nội dung và tệp đính kèm được lưu trữ dưới dạng javax.mail.Multipart. MimeMessage này có thể được ký và mã hóa. Khi tôi thêm toàn bộ MimeMessage làm cơ thể từ trao đổi và gửi nó với smtp nó hy vọng sẽ làm việc. – lahu89
Có một thành phần Camel dành riêng cho chữ ký số của Crypto: http://camel.apache.org/crypto-digital-signatures.html. Và một liên kết khác cho tất cả các mối quan tâm về bảo mật trong Camel http://camel.apache.org/security.html –