SSL学习笔记

简介:

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

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

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的公钥

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

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

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

这样客户端就可以与服务端通信了.

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

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

 

 

 
  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中 

 

本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/572478



相关文章
|
安全 算法 物联网
MQTT 安全通信 SSL 双向认证 | 学习笔记
快速学习 MQTT 安全通信 SSL 双向认证
1925 0
MQTT 安全通信 SSL 双向认证 | 学习笔记
|
分布式计算 安全 Hadoop
配置 HDFS-配置 https 证书以及 ssl 配置文件|学习笔记
快速学习配置 HDFS-配置 https 证书以及 ssl 配置文件
912 0
配置 HDFS-配置 https 证书以及 ssl 配置文件|学习笔记
|
应用服务中间件 网络安全 Apache
SSL 数字证书-Tomcat 证书配置部署|学习笔记
快速学习 SSL 数字证书-Tomcat 证书配置部署
160 0
|
负载均衡 前端开发 网络安全
SSL 数字证书-SLB 证书配置部署|学习笔记
快速学习 SSL 数字证书-SLB 证书配置部署
219 0
|
存储 网络安全 数据安全/隐私保护
SSL 数字证书-IIS 证书配置部署|学习笔记
快速学习 SSL 数字证书-IIS 证书配置部署
177 0
|
应用服务中间件 网络安全 nginx
SSL 数字证书-Nginx 证书配置部署|学习笔记
快速学习 SSL 数字证书-Nginx 证书配置部署
375 0
SSL 数字证书-Nginx 证书配置部署|学习笔记
|
网络安全 Apache 开发者
SSL 数字证书-Apache 证书配置部署|学习笔记
快速学习 SSL 数字证书-Apache 证书配置部署
149 0
|
1天前
|
前端开发 小程序 应用服务中间件
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
15 4
|
9天前
|
安全 网络安全
如何给网站添加ssl安全证书
如何给网站添加ssl安全证书
24 1
|
10天前
|
安全 网络安全 Windows
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
在访问App Service的KUDU工具或使用`az webapp deploy`时遇到SSL错误:`SSL: CERTIFICATE_VERIFY_FAILED`。解决方法是临时禁用Azure CLI的SSL验证。在PowerShell中,设置`$env:ADAL_PYTHON_SSL_NO_VERIFY`和`$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`为1;在Windows命令提示符中,使用`set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1`。注意,这可能引入安全风险,应仅在必要时使用。