client = new FTPSClient(implictSSL)
KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509")
kmf.init(KeyStore.getInstance("BKS"), "wshr.ut".toCharArray())
client.setTrustManager(new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
})
client.setKeyManager(kmf.getKeyManagers()[0])
client.setNeedClientAuth(false)
client.setUseClientMode(false)
在大多数情况下,这是个错误的配置,在这里的密钥库并没有containt的正确证书,证书链是不完整的,或者客户端没有提供有效的凭证。因此,在最后一个项目中,我决定记录发生的事件,并分析导致在SSL握手期间的特定错误的原因。在这篇文章中,我会告诉你特定的SSL错误发生的原因,并且如何通过分析握手信息进行检测,以及如何解决这些问题。为此,我使用以下情形:
服务器使用由CA颁发的证书,并要求客户端进行身份验证。服务器使用一个简单的信任列,可以信任的将CA列出。
客户端连接使用这个单一的可信任的由CA颁发的证书,并有它自己的trustore还包含从服务器发来的证书。
这不是一个非常复杂的环境,而是你经常可以看到的。请注意以下信息,当你不使用客户端的证书或使用自签名的证书时,也可以找出问题。在这些事例中,确定问题的方式基本上是相同的。
Tomcat支持SSL,并且用它确保机密数据的传输,如身份证号码和信用卡信息等。利用KeyTool程序生成一个public/private键对,同时选择一家可信任的授权机构,来创建和签发数字证书。
一旦收到证书,并将它导入到keystore后,下一步就是在服务器上安装证书了。如果使用的是Tomcat,复制放在服务器某个位置下的keystore,并对Tomcat进行配置即可。随后,打开conf/server.xml文件,并在<service>下添加以下Connector元素。
<Connector port="443"minSpareThreads="5"
maxSpareThreads="75"
enableLookups="true"
disableUploadTimeout="true"
acceptCount="100"
maxThreads="200"
cheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="/path/to/keystore"
keyAlias="example.com"
keystorePass="01secret02%%%"
clientAuth="false"
sslPortocol="TLS"
/>
以上从cheme开始到最后的代码与SSL有关。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)