java - 如何使用自定义 TrustManager 通过 SSL 连接到 POP3 服务器?

标签 java ssl ssl-certificate pop3 jakarta-mail

我正在为电子邮件发件人类编写测试,我需要能够通过从目标 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();

最佳答案

您真的需要信托经理吗?

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

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

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

关于java - 如何使用自定义 TrustManager 通过 SSL 连接到 POP3 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621576/

相关文章:

java - Android搜索(EditText)功能在fragment ExpandableListView中

ssl - HAProxy 卡在 ssl websocket 上(解析 livequery)

ruby - 由于使用 rbenv 的 ssl 无效导致 Gem 安装错误

SSL - 如何以及何时使用它

java以编程方式将自签名证书添加到 keystore

java - 泛型方法使用类型作为参数

java - 为什么createStatement方法是在Connection接口(interface)而不是Statement接口(interface)下声明的?

python - 在 Windows 上为 docker 容器安装 SSL CA 证书

unix - <123.123.123.123> 的证书与证书主题的通用名称不匹配

java - 通过在 J2ME 中提供搜索功能向移动设备的多个联系人发送消息