java ssl imap_急~!高分求助~~ JAVA 实现IMAP SSL 993 问题 在线等待

我连接163邮箱测试。以下是我的代码。但是store.connect的时候就失败。如果port设置为143就OKSSL又什么不一样么?应该怎么写??//动态的添加securityproviderSecurity.addProvider(n...

我连接163 邮箱测试。

以下是我的代码。

但是store.connect 的时候 就失败。如果 port 设置为143 就OK

SSL 又什么不一样么?应该怎么写??

// 动态的添加security provider

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

// 下面的代码就是替换不同协议的socket factory

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

Properties props = System.getProperties();

props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);

//如果我们希望JavaMail只处理SSL的连接, 对于非SSL的连接不做处理, 那么我们最好设置fallback为false

props.setProperty("mail.imap.socketFactory.fallback", "false");

props.setProperty("mail.imap.port", port);

props.setProperty("mail.imap.socketFactory.port", port);

mailsession = Session.getDefaultInstance(props, null);

store = mailsession.getStore("imap");

try {

log.info("IMAP:SSL"+port+"开始连接");

store.connect(host, Integer.valueOf(port),username, StringUtils.decodeBase64(password));

} catch (Exception e) {

log.info("IMAP:SSL"+port+"连接失败");

log.info("e.getMessage()"+e.getMessage());

log.info(e);

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSL双向认证是指在SSL连接中,不仅客户端要验证服务器的身份,服务器也要验证客户端的身份。Java实现SSL双向认证一般需要以下步骤: 1. 创建KeyStore和TrustStore,分别存储客户端和服务器的证书和私钥。可以使用keytool工具来创建这些文件。 2. 在服务器端,创建SSLContext对象,并为其指定KeyManagerFactory和TrustManagerFactory。这些工厂类可以使用KeyStore和TrustStore来初始化。 3. 在客户端,创建SSLContext对象,并为其指定TrustManagerFactory。这个工厂类可以使用TrustStore来初始化。 4. 在服务器端,创建ServerSocket并开始监听客户端连接。当客户端连接到服务器时,服务器会为客户端创建一个SSLSocket并开始SSL握手。 5. 在客户端,创建SSLSocket并连接到服务器。客户端和服务器会进行SSL握手,包括交换证书和验证身份等步骤。 6. 客户端和服务器建立SSL连接后,可以开始进行安全通信。 下面是一个简单的Java SSL双向认证的示例代码: 服务器端: ```java KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(new FileInputStream("server.jks"), "password".toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(keyStore, "password".toCharArray()); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory(); SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(8443); while (true) { SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept(); // 处理客户端连接 } ``` 客户端: ```java KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(new FileInputStream("client.jks"), "password".toCharArray()); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket("localhost", 8443); // 发送和接收数据 ``` 需要注意的是,这只是一个简单的示例代码,实际中还需要考虑证书的管理、密码的安全等问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值