我已经下载了 apache james 2.3.2。目前我只想让它在本地主机上使用 ssl encyption(但我对 ssl 知之甚少)。最初我设法让它运行,创建帐户(通过运行 james-2.3.2/bin/run.bat)并使用 mozilla thunderbird 邮件客户端连接到这些帐户。当我尝试创建自签名 ssl 证书时,问题就来了。我尝试了两种不同的方法。
运行 keytool -genkeypair 在 .keystore 中创建一个 keystore 在我的主目录和
运行 keytool -genkeypair -alias certificate -keystore my_keystore.pfx -storepass 密码 -validty 365 -keyalg RSA -keysize 2048 -storetype pkcs12 在 my_keystore.pfx 中创建一个 keystore 。
james-2.3.2 将接受 .keystore 但 Thunderbird 不会,Thunderbird 将接受 my_keystore.pfx 但 James 抛出异常。我认为错误可能在 james-2.3.2/apps/james/SAR-INF/conf.xml
文件中。
<sockets>
<server-sockets>
<factory name="plain" class="org.apache.avalon.cornerstone.blocks.sockets.DefaultServerSocketFactory"/>
<factory name="ssl" class="org.apache.avalon.cornerstone.blocks.sockets.TLSServerSocketFactory">
<ssl-factory>
<keystore>
<file>conf/my_keystore.pfx</file>
<password>password</password>
<key-password>password</key-password>
<type>PKCS12</type>
<protocol>TLS</protocol>
<algorithm>SHA256withRSA</algorithm>
<authenticate-client>false</authenticate-client>
</keystore>
</ssl-factory>
</factory>
</server-sockets
当我尝试从批处理文件再次运行 james 时,我得到了 NoSuchAlgorithException。已尝试使用 allsorts 作为算法标签而不是 SHA256withRSA 但似乎没有任何效果。如果有人知道答案,我会很高兴。另外,如果有人知道如何打开日志记录以便我可以在日志文件中看到它,那也会很有帮助。
最佳答案
sunjce_provider.jar 必须从 JRE lib 文件夹复制到 James 中的 lib 文件夹。如果算法标签保留为默认 SunX509,James 将接受 .pfx 文件。我在配置 xml 文件的注释中发现了这条信息。
关于java - 配置 apache james 2.3.2 以支持 ssl : NoSuchAlgorithmException 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171901/