SSLSocket通信如何验证客户端的证书是否合法?不知道有什么科学的方法?我现在是拿到客户端证书里的相关信息与服务器端的证书信息进行比较的。

解决方案 »

  1.   

    你去搜索一下 SSL的双向认证
    核心代码如下
                 SSLContext ctx = SSLContext.getInstance("SSL");    
       
                 KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");    
                 TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");    
       
                 KeyStore ks = KeyStore.getInstance("JKS");    
                 KeyStore tks = KeyStore.getInstance("JKS");    
       
                 ks.load(new FileInputStream("src/ssl/kclient.keystore"), CLIENT_KEY_STORE_PASSWORD.toCharArray());    
                 tks.load(new FileInputStream("src/ssl/tclient.keystore"), CLIENT_TRUST_KEY_STORE_PASSWORD.toCharArray());    
       
                 kmf.init(ks, CLIENT_KEY_STORE_PASSWORD.toCharArray());    
                 tmf.init(tks);    
       
                 ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);    
       
                 sslSocket = (SSLSocket) ctx.getSocketFactory().createSocket(DEFAULT_HOST, DEFAULT_PORT);