SSL学习笔记

1. 做为文件形式存在的证书通常有这几种格式:
1.带有私钥的证书
由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx做为证书文件后缀名。
2.二进制编码的证书
证书中没有私钥,DER 编码二进制格式的证书文件,以cer做为证书文件后缀名。
3.Base64编码的证书
证书中没有私钥,BASE64 编码格式的证书文件,也是以cer做为证书文件后缀名。java

用keystool建立一个密钥库,里面含有demo-server的公钥与私钥.bash

1. keytool -genkey -v -alias  demo-server -keyalg RSA -keystore ./server_ks -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,C=cn" -storepass server -keypass 123123服务器

导出demo-server的数字证书,证书有会有demo-server的公钥socket

2. keytool -export -alias demo-server -keystore ./server_ks -file server_key.ceride

3. 把2生成的demo-server的数字证书导入到demo-client的密钥库./client_ks中编码

keytool -import -trustcacerts -alias bluedash-ssl-demo-server -file ./server_key.cer -keystore ./client_ksspa

这样客户端就能够与服务端通讯了..net

服务器端须要设定javax.net.ssl.keyStore/javax.net.ssl.keyStorePassword两个系统参数code

而客户端须要设定javax.net.ssl.trustStore/javax.net.ssl.trustStorePassword两个系统参数server

 

 

  
  
           
  
  
  1. //server  
  2. System.setProperty("javax.net.ssl.keyStore", SERVER_KEY_STORE);  
  3.   System.setProperty("javax.net.ssl.keyStorePassword", SERVER_KEY_STORE_PASSWORD); SSLServerSocketFactory factory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();  
  4. SSLServerSocket _socket = (SSLServerSocket)factory.createServerSocket(8443);  
  5. _socket .accept();  
  6.  
  7. //client  
  8. System.setProperty("javax.net.ssl.tructStore", SERVER_TRUST_STORE);  
  9.   System.setProperty("javax.net.ssl.tructStorePassword", SERVER_TRUST_STORE_PASSWORD); SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();  
  10. SSLSocket _socket = (SSLSocket)factory.createSocket("localhost",8443);  
  11.  

 

 对于双向认证而言,两个端点既作为服务端,也作为客户端。这时四个系统参数都须要设定。从字面自己的意思就能够理解,keyStore存储自已的私钥,用于代表自已的身份,而trustStore存储我能够信任的其余人公钥。咱们通常所说的单向认证,就是客户端去认证服务端,服务端须要keyStore存储私钥,而客户端则须要把服务端的公钥加入可信任认证列表,即trustStore中 

相关文章
相关标签/搜索