JAVA ftps设置_如何使用apache.commons.net.ftps配置客户端身份验证?

在Java中使用apache.commons.net.ftps实现FTPS客户端时遇到问题,当服务器强制客户端身份验证时,连接失败。通过设置系统属性-Djavax.net.ssl.keyStore、-Djavax.net.ssl.keyStorePassword和-Djavax.net.ssl.keyStoreType来尝试启用客户端身份验证,但收到SSLHandshakeException。服务器日志显示客户端没有返回证书。需要确定为何客户端没有发送正确的证书链,并可能需要检查证书或私钥是否符合SSL/TLS的要求。
摘要由CSDN通过智能技术生成

我使用apache.commons.net-framework在

java中实现了FTPS客户端(FTP over SSL / TLS).

它被配置为在默认端口21上执行显式安全性.

ftpsClient = new FTPSClient(false);

ftpsClient.setTrustManager(getConfiguration().getCertificatesManager());

ftpsClient.connect(getConfiguration().getHostName(), getConfiguration().getPort());

只要我不在服务器上强制执行客户端身份验证,一切正常.

但我需要启用客户端身份验证,因此我在服务器上强制执行它并配置客户端系统属性:

-Djavax.net.ssl.keyStore="D:/.../ftps-client-auth.keystore"

-Djavax.net.ssl.keyStorePassword="*****"

-Djavax.net.ssl.keyStoreType=JKS

我得到的就像我没有设置系统属性一样:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)

at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1806)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:986)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1170)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1197)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1181)

at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:265)

at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:207)

at org.apache.commons.net.SocketClient.connect(SocketClient.java:172)

at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)

服务器日志说:

DEBUG: Client "", "SSL_accept failed: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate"

似乎没错 – 我启用了-Djavax.net.debug = all,这表明服务器发送了它接受的CN列表,但是客户端发送了一个空的证书链.

>我做错了什么?

>我是否需要以编程方式进行一些配置?

>证书或私钥是否需要支持SSL / TLS的特殊功能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值