JAVA ftps设置_如何使用apache.commons.net.ftps配置客户端身份验证?
我使用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的特殊功能?
JAVA ftps设置_如何使用apache.commons.net.ftps配置客户端身份验证?相关推荐
- idea看java版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...
详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用) 有时候需要看Java源码,但是 Java 1.7 和 Java 1.8的差别的关系,有时候你想查看不同jd ...
- 使用Apache Commons Configuration读取配置信息
2019独角兽企业重金招聘Python工程师标准>>> 在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache ...
- java ntlm解密_java – HttpClient 4.1.1在使用NTLM进行身份验证时返回401,浏览器工作正常...
我正在尝试使用Apache / Jakarta HttpClient 4.1.1使用给定的凭据连接到任意网页.为了测试这一点,我在运行的dev机器上安装了最少的IIS 7.5,其中一次只有一种身份验证 ...
- Java Web——文件上传(Apache Commons FileUpload实现上传图片DEMO)
基本概念 Apache Commons FileUpload :Apache Commons FileUpload组件提供了一种简单而灵活的方法,可以将对多部分文件上传功能的支持添加到Servlet和 ...
- java安全级别设置_怎么调整java安全级别
要在 Internet Explorer 中配置 Java 安全性,请执行以下操作: 启动 Internet Explorer,然后单击工具菜单上的 Internet 选项. 在 Internet 选 ...
- mac电脑配置java环境变量_教你在Mac系统中配置JAVA环境变量的方法
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.下面向大家介绍Mac电脑上如何配置Java ...
- aws 短信验证_在AWS Kubernetes上进行抛光的rshiny身份验证
aws 短信验证 If you're looking for a hassle free way to add authentication to your RShiny Apps you shoul ...
- 交叉验证选择最佳参数_如何为您的公司选择最佳的身份验证即服务提供商
交叉验证选择最佳参数 by Jeff Okawa 通过Jeff Okawa 如何为您的公司选择最佳的身份验证即服务提供商 (How to choose the best Authentication ...
- azure云数据库_在Azure SQL数据库中配置多重身份验证
azure云数据库 介绍 (Introduction) The new SSMS 17.2 allows users to authenticate using Active Directory wi ...
- mac java偏好设置_在 Mac中配置Java开发环境
最近买了一台mac pro,晚上在家写java,在配置环境的时候碰到很多问题,现在总结出来,提供给大家. 1.配置Tomcat 1.下载: 从apache官网(http://tomcat.apache ...
最新文章
- matlab Retinex图像增强算法
- 黄海广博士的知乎高赞(1000+)文章分享
- python没有库_Python开发者必备6个基本库,这个都没有怎么做开发呢
- 玩转Jquery中的动画效果(animate方法)
- ios(safar/微信)返回不执行js
- linux命令-eq是什么意思,linux查看系统信息命令
- easyui datagrid加载数据的三种方式
- java 怎么用毫秒_java1.8中如何使用精确到毫秒的时间
- catia怎么将特征参数化_CATIA参数化建模及关系式的创建和使用 | 坐倚北风
- Nginx 屏蔽ip地址的方法
- js 时间任意格式化 ,又来造轮子了
- ffmpeg检测文件是否损坏_[音视频] 下载M3U8加密视频文件
- 向日葵深度linux,完美使用向日葵远程软件
- 2021互联网大厂中秋礼盒大盘点
- 计算机应用程序通过文件打不开,应用程序打不开|exe文件关联修复器|打开方式还原 - 所有应用程序文件打不开的解决方法 - 安全专题...
- Python字符串格式化
- Matlab实现 LU分解法解线性方程组(全选主元列选主元)
- Sieve of Eratosthenes(埃拉托色尼筛选法)——C++实现
- Hadoop2.x HA
- 魅蓝note6的android怎么升级,魅蓝note6怎么把应用安装到sd卡