我有一个在UNIX(Solaris)服务器上运行的进程,该服务器每晚运行并且需要能够发送加密的电子邮件.
我只需要"加密"部分,而不是PKI的数字签名/自我否认部分.
我在企业设置中使用MS Outlook,我假设当用户点击工具 - >选项 - >安全性下的"发布到GAL ..."时,这会将他们的PUBLIC KEY发布到全局地址列表(GAL).
所以我想我需要一种方法来连接到我的UNIX服务器上GAL所在的Exchange Server.然后我需要检索接收者PUBLIC KEY.然后我可以使用接收者PUBLIC KEY加密电子邮件.这会加密电子邮件,只允许有接收者PRIVATE KEY的人正确阅读电子邮件吗?然后我会发出电子邮件.但是,我不确定的是,如何仅使用接收者PUBLIC KEY(在UNIX端没有KEYS)加密电子邮件,以便MS Outlook能够在收件人收到电子邮件时读取电子邮件?
这会有用吗?那里的任何人都遇到了类似的问题并提出了解决方案?Java代码是首选,但任何语言都可以.
为获得合理的答案需要的任何其他详细信息?
谢谢
你的逻辑是正确的.
典型的PKI加密是:
cryptoAlgorithm(plaintext, public key) = ciphertext cryptoAlgorithm(ciphertext, private key) = plaintext
对于某些算法,cryptoAlgorithm是相同的过程,发送和接收.
所以...对于每个收件人,您需要他们的数字证书,其中包含他们的公钥.
GAL证书存储
我认为可以配置GAL以允许用户发布证书.我的总体印象是GAL的配置和使用方式因公司而异.
S/MIME和PGP
我同意S/MIME是你想要的Outlook的帖子.
另请注意 - 如果您的用户使用的是Outlook Web而不是Outlook客户端,则他们将无法接收加密的电子邮件.至少到2000年,但我怀疑2003年.这是一个巨大的可用性问题,我没有很好的解决方法.
一般微观性
微软有自己独特的做事方式(不开玩笑......).它们在PKI世界中没有什么不同.必须使用加密功能清楚地标记用户证书.我知道它必须有KeyUsage字段KeyEncipherment.并且可能还需要Microsoft的另一个扩展.格式不正确的用户证书可能意味着收件人在收到邮件时将无法读取邮件,因为Outlook不会同意邮件已加密的事实.在这里省略一些严重的集成测试时间,并打算在如何执行此操作的过程中触及大量用户组.每次我的团队必须与Microsoft产品集成时,都会出现令人讨厌的惊喜,特别是关于如何配置证书.
图书馆和工具
我第二次推荐BouncyCastle - 我没有使用它,但我信任的人发誓它.当我不得不写这些东西时,我个人喜欢Phaos工具包,但我已经过时了.我知道这需要花费很多钱,而且可能会让你失望.
OpenSSL是另一个神话般的工具,它比SSL更有用.它非常适合生成测试证书,但我不记得它是否也进行了S/MIME电子邮件加密.
对于大多数库,您应该能够获取纯文本和证书,并将它们放入生成S/MIME消息的函数中.他们也可能需要加密算法.