OpenSSL
OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around the project, or to start making your own contributions, start with the community page. To get the latest news, download the source, and so on, please see the sidebar or the buttons at the top of every page.
The OpenSSL toolkit is licensed under an Apache-style license, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions.
 
OpenSSL的总结
使用openssl工具来验证服务器证书以及握手过程
 
 
OpenSSL认证文件的生成
 
# 概念:
      首先要有一个根证书,然后用根证书来签发用户证书。
      用户进行证书申请:一般先会生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的根证书来签发证书。
特别说明:
(1)自签名证书(一般用于顶级证书、根证书): 证书的名称和认证机构的名称相同.
(2)根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任
 
数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。
数字证书将公钥与特定的申请人匹配,包含申请人的公钥,并且该证书的真实性由颁发机构保证,这样就保证了公钥的安全有效地发布。
证书将包含下列信息:
  • 组织的公用名称
  • 其它标识性信息(如 IP 和物理地址)
  • 公钥
  • 公钥的到期日期
  • 发出此 ID 的 CA 的名称
  • 一个唯一的序列号
  • CA的数字签名
 
# 步骤
          认证中心CA(自己做CA):生成CA私钥(ca.key)--->>生成CA证书请求(ca.csr)--》自签名得到根证书(ca.crt, CA给自已颁发的证书)
          Client and Server:生成私钥(client.key/server.key)--->>生成证书请求(client.csr/server.csr)--->>通过CA签名得到证书(client.crt/server.crt)
          也可将证书请求(client.csr/server.csr)发送到verisign等第三方认证机构并支付一定费用由它验证。
          生成的证书格式可以互相转换,例如:生成的.crt可转换成.pem;利用.key和.crt两个文件可以生成p12格式证书或者是pem格式证书 。
 
# 最终可以生成
服务端证书:ca.crt, server.key, server.crt, (server.pem, server.pfx, ......)
客户端证书:ca.crt, client.key, client.crt, (client.pem, client.pfx, ......)
 
# 证书格式转换
例如,pem格式的证书可以由证书文件(crt)和私钥文件(key)合并来生成
 
# 证书的文件形式

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

.key:一般指PEM格式的私钥文件。

.crt:证书文件,certificate的缩写。

.csr:(证书签名请求(Certificate Signing Request),含有公钥信息。

.crl:(证书吊销列表,Certificate Revocation List),是证书撤销状态的公布形式,就像信用卡的黑名单,用于公布某些数字证书不再有效。

CRL 是一种离线的证书状态信息,以一定的周期进行更新。因此必须定期下载该清单,才会取得最新信息。
基本的 CRL信息有:被撤销证书序列号、撤销时间、撤销原因、签名者以及 CRL 签名等信息。
基于 CRL 的验证是一种不严格的证书认证。CRL 能证明在 CRL 中被撤销的证书是无效的。但是它不能给出不在 CRL 中的证书的状态

.pem:PEM(Privacy Enhanced Mail)是 openssl 默认采用的存放信息的格式。用于导出,导入证书。

Openssl 中的 PEM 文件一般包含如下:
内容类型 ----- 表明本文件存放的是什么信息内容,有证书开头,结尾的格式,形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。
头信息 ----- 表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。
信息体 ----- BASE64 编码的数据。可以包括所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和 (x509) 证书。
存储用 Base64 编码的 DER 格式数据,用 ascii 报头包围,因此适合系统之间的文本模式传输。

.jks : 通常可以将Apache/OpenSSL使用的“KEY文件 + CRT文件”格式”转换为标准的Java Key Store(JKS)文件。

JKS文件格式被广泛的应用在基于JAVA的WEB服务器、应用服务器、中间件。
可以将JKS文件导入到TOMCAT、 WEBLOGIC 等软件。

 

Tools - OpenSSL的更多相关文章

  1. m.Tomcat使用openssl走APR通道配置单向和双向认证

    引用自: http://blog.csdn.net/gtuu0123/article/details/5827800(Tomcat的SSL单向认证)  http://blog.csdn.net/gtu ...

  2. centos 5.x 升级openssl

    今日想在centos 5.2上面安装mysql 5.5.37,在make的时候提示: Linking C shared module adt_null.so [ 65%] Built target a ...

  3. 你想要了解但是却羞于发问的有关SSL的一切

    Everything You Ever Wanted to Know About SSL (but Were Afraid to Ask) Or perhaps more accurately, &q ...

  4. Ubuntu实现树莓派交叉编译

    一.交叉编译 在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时 ...

  5. Git for Windows v2.11.0 Release Notes

    homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...

  6. windows ntp安装及调试

    Setting up NTP on Windows It's very helpful that Meinberg have provided an installer for the highly- ...

  7. 痞子衡嵌入式:开启NXP-MCUBootUtility工具的HAB加密功能 - CST(中英双语)

    1 Reason for enabling HAB encryption function 为什么要开启HAB加密功能 NXP-MCUBootUtility is a tool designed fo ...

  8. SSL/TLS原理详解2

    引用原文地址:https://segmentfault.com/a/1190000004985253#articleHeader6 在进行 HTTP 通信时,信息可能会监听.服务器或客户端身份伪装等安 ...

  9. tomcat https

    转自 http://11lingxian.iteye.com/blog/1491607 双向认证: 客户端向服务器发送消息,首先把消息用客户端证书加密然后连同时把客户端证书一起发送到服务器端, 服务器 ...

随机推荐

  1. java应用健康检查

    本文主要针对自己手写shell监控应用状态,有可系统解决方案的,比如K8S,可以略过 #!/bin/sh#health_check.sh count=`ps -ef | grep test.jar | ...

  2. Mesh属性[Unity]

    Mesh属性[Unity] Mesh是Unity内的一个组件,称为网格组件.3D网格是Unity中最重要的图形元素.在Unity中存在多种组件用于渲染标准网格或者蒙皮网格.拖尾或者3D线条. 在Uni ...

  3. Ubuntu输入命令无效的问题

    https://blog.csdn.net/u014797226/article/details/80800550?utm_source=blogxgwz2 Ubuntu启动时输入密码后,一直停留在登 ...

  4. Java方法区(Method Area)

    方法区与Java堆一样,是各个线程共享的内存区域,他在与存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,虽然Java虚拟机规范把方法区描述为堆得一个逻辑部分,但是他却有一个别 ...

  5. Windows server 2012 R2 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同

    Windows server 2012 R2 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同.”使用克隆的系统时,加域是出现如下问题.“无法完成域加入,原因是试图加入的域的SI ...

  6. C#使用 params object[] 将参数个数不一样的方法 集成一个

    getChange("1"); getChange("1","2"); public string getChange(params obj ...

  7. FortiGate日志设置

    1.默认 FGT5HD3916802737 # config log syslogd setting FGT5HD3916802737 (setting) # show config log sysl ...

  8. [转贴]LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project

    https://blog.csdn.net/melody157398/article/details/24354415   LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---I ...

  9. 获奖感想和Java学习总结

    获奖感想和Java学习总结 一.获奖感想 能成为小黄衫第二批的成员之一,我感到非常荣幸.我在对老师给予我的鼓励与肯定感到欣喜之余,更多的是感受到了一种鞭策与期望.小黄衫不仅仅是对我的一种奖励,更是激励 ...

  10. Android开发日常-listview滚动方法梳理

    listview滚动方法梳理 1.setSelection(position); 滚动到指定条目 2.setSelectionFromTop(position,y): 距离指定条目向下偏移y(像素) ...