【问题标题】:How to connect to POP3 server through SSL with a custom TrustManager?如何使用自定义 TrustManager 通过 SSL 连接到 POP3 服务器?
【发布时间】:2013-01-31 08:42:48
【问题描述】:

我正在为电子邮件发件人类编写测试,我需要能够通过从目标 POP3 服务器下载邮件来检查邮件是否到达。该服务器是 Exchange 服务器,只能通过 SSL 进行连接。该测试将定期在 CI 服务器上运行,因此无法进行正确的认证过程。据我所知,可以创建一个可以接受任何证书的自定义 TrustManager 类。如何告诉我的 POP3 连接使用我的自定义 TrustManager? 在我的代码的当前形式中,我看不到任何方法:

    String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

    Properties pop3Props = new Properties();

    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
    pop3Props.setProperty("mail.pop3.port", "995");
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995");

    URLName url = new URLName(provider, host, 995, "",
            username, password);

    Session session = Session.getInstance(pop3Props, null);
    Store store = new POP3SSLStore(session, url);
    store.connect();

【问题讨论】:

    标签: java ssl ssl-certificate pop3 jakarta-mail


    【解决方案1】:

    您真的需要信任经理吗?

    您也可以将您的证书导入 jdk cacerts 文件,然后默认的 TrustManager 将接受您到您网站的 ssl 连接。

    这里有关于如何导入服务器证书的链接:

    http://javarevisited.blogspot.com/2012/03/add-list-certficates-java-keystore.html

    【讨论】:

    • 虽然在这里使用自定义信任管理器非常容易(通过传递使用使用此信任管理器构建的SSLContext 的自定义SSLSocketFactory),将测试证书导入信任存储(默认一种或另一种)是正确的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多