我有一个在每晚运行的 UNIX (Solaris) 服务器上运行的进程,需要能够发送加密的电子邮件。
我只需要“加密”部分,不需要 PKI 的数字签名/ self 否认部分。
我在公司环境中使用 MS Outlook,我假设当用户在工具 -> 选项 -> 安全下单击“发布到 GAL...”时,这会将他们的公钥发布到全局地址列表 (GAL ).
所以我想我需要一种方法来从我的 UNIX 服务器连接到 GAL 所在的 Exchange 服务器。 然后我需要检索收件人的公钥。 然后我可以使用收件人的 PUBLIC 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
我同意您希望 Outlook 具备 S/MIME 的帖子。
另请注意 - 如果您的用户使用的是 Outlook Web 而不是 Outlook 客户端,他们将无法接收加密的电子邮件。至少从 2000 年开始,但我怀疑 2003 年也是如此。这是一个巨大的可用性问题,我没有好的解决方法。
一般微软风格
Microsoft 有自己特殊的做事方式(不是开玩笑...)。他们是 PKI 的世界没有什么不同。用户证书必须明确标明加密能力。我知道它必须有 KeyUsage 字段 KeyEncipherment。 Microsoft 可能还需要另一个扩展。用户证书格式不正确可能意味着收件人在邮件到达时无法阅读,因为 Outlook 不会同意邮件已加密这一事实。在这里抽出一些严肃的集成测试时间,并计划让很多用户组了解如何做到这一点。每次我的团队不得不与 Microsoft 产品集成时,都会出现令人讨厌的惊喜,尤其是关于证书的配置方式。
库和工具
我支持 BouncyCaSTLe 的推荐 - 我没有使用它,但我信任的人发誓。当我不得不编写这些东西时,我个人很喜欢 Phaos 工具包,但我已经过时了。我知道这要花很多钱,而且对你来说可能太划算了。
OpenSSL 是另一个出色的工具,其用途远不止 SSL。它非常适合生成测试证书,但我不记得它是否也进行 S/MIME 电子邮件加密。
对于大多数库,您应该能够获取纯文本和证书,并将两者放入生成 S/MIME 消息的函数中。他们可能还需要加密算法。
关于java - 如何以编程方式发送加密电子邮件(从自动化过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300334/
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=