Openssl与网络安全
openssl
- 一openssl简史
- 二openssl组成
- 三openssl优缺点
- 四openssl功能
一openssl简史
openssl是一个开放源代码的SSL协议的产品实现,采用C语言作为开发语言,具备了跨系统的性能。
Openssl最早版本在1995年发布的,1998年后开始由openssl项目组维护和开发。openssl的源代码库可以从官网链接: https://www.openssl.org/.支持Linux、Windows、MAC和VWS等多种平台。目前,openssl已经获得广泛运用,例如VOIP的openH323协议、Apache服务器、Linux安全模块等。
二openssl组成
Openssl实际上包含三部分:SSL协议库、密码算法库、应用程序。
SSL协议库部分完全实现了SSL协议的三个版本和TLS协议,SSL协议库的实现是由密码算法库的基础上实现的。使用该库,可以完整的建立一个SSL服务器和SSL客户端。该部分在Linux下编译会形成一个明文libssl.a的库,在Windows下则是名为ssleay32.lib的库。
openssl密码算法库是一个强大完整的密码算法库,主要包括公开密钥算法、对称加密算法、散列函数算法、X.509数字证书标准、PKCS12、PKCS7等标准。该部分在Linux下编译会形成一个明文libcrypto.a的库,在Windows下则是名为libeay32.lib的库。
应用程序部分是Openssl最生动的部分,也是openssl使用入门的部分。该部分基于上述的密码算法库和SSL协议实现很多实用和范例性的应用程序,主要包括各种算法的加密程序和各种密钥的产生程序(例如rsa、md5、enc等)、证书签发和验证程序(ca、x509,crl等)、SSL连接测试程序,以及其他的标准程序等。
三openssl优缺点
与其他的一些同类型的密码算法库相比,openssl有以下优点
- 采用C语言开发,支持多种操作系统,可移植性好;
- 功能全面,支持大部分主流密码算法、相关标准协议和SSL协议;
- 开放源代码,可信任,能根据自己需要进行修改,对技术人员有借鉴和研究的价值;
- 具备应用程序,既能直接使用,也可方便地进行二次开发;
- 免费,也可用作非商业用途。
有以下缺点:
- 采用非面向对象的C语言开发,对于初学者来说有一定的困难,也不利于代码的剥离;
- 文档不全面、增加使用的困难性。
总的来说,openssl是一个非常优秀的软件包,很值得密码安全技术人员的研究和使用。
四openssl功能
介绍其主要功能:
- 对称加密算法:openssl提供八种加密算法,其中7种是分组密码加密,AES(128bit)、DES、blowfish、CAST、IDEA、RC2、RC4、,仅有的一个是流密码算法RC4,
- 非对称加密算法:DH(密钥交换)、RSA(密钥交换、数字签名、加密(速度慢))、DSA(数字签名)、EC
- 信息摘要算法:MD2、MD5、MDC2、SHA(SHA1)和RIPEMD
- 密钥和证书管理
- SSL和TLS协议
- 应用程序:也就是openssl的指令,供测试或者其他目的的使用
以下介绍openssl的指令:
- asn1parse:对于ASN.1编码的文件或字符串进行解析,比如对证书文件,可以使用该指令对其进行解释,它会将其中每一个数据对象打印处理
- ca:证书签发和管理,模拟一个小型ca的功能,并跟openssl数据连接起来作为证书数据库。该指令具有签发、验证和吊销等功能
- ciphers:该指令可以列出不同协议支持的算法体系
- crl:证书签发和管理,该指令可以针对吊销证书列表(CRL)文件进行文本解析和验证
- crl2pkcs7:格式转换,该指令可以将CRL和多个证书封装成一个PKCS#7格式的证书文件
- dgst:信息摘要和签名
- dh:非对称密钥,生成和处理DH密钥参数文件,dhparam已经集成了该指令的功能,一般不使用该指令了
- dhparam:用于生成DH密钥参数文件、解析DH密钥参数文件以及格式转换等。在新版中,该指令集成了dh和gendh指令的功能
- dsa:该指令用于对DSA密钥的格式转换一信息输出处理,,并且可以对DSA密钥进行加密
- dsaparam:该指令用于生成和处理DSA参数文件,并且可以用于生成DSA密钥
- enc:对称密钥,该指令可以使用openssl支持的各种对称加密算法对给定的数据或者文件进行加密或者解密
- engine:该指令显示openssl支持的engine接口列表,并且可以测试openssl猪脆骨的engine接口是否有效
- errstr:根据给定错误代码提示错误信息
- gendh:非对称密钥,生成DH密钥,该功能已集成到dhparam指令中
- gendsa:非对称密钥,根据dsa参数文件生成一个DSA私钥,可以采用不同的算法对DSA私钥加密保护
- genrsa:用于生成RSA私钥,可以同时对rsa私钥进行加密保护
- nseq:格式转换,可以将普通X.509证书转换成Netscape格式的证书,也可以转换过来
- ocsp:是一个实现了在线证书状态协议(OCSP)的指令工具,可以对证书的有效性进行验证等OCSP任务操作
- passwd:根据给定的口令通过hash算法生成密钥
- pkcs12:格式转换,该指令可以将X.509证书和PEM编码的私钥封装成pkcs#12格式的证书,也可以转换回来
- pkcs7:格式转换,该指令可以将PKCS#7格式的文件转换成普通的X.509格式的证书或者CRL
- pkcs8:格式转换,该指令可以将私钥加密转换成PKCS#8格式或者将其转换成普通的PEM或DER编码私钥
- rand:该指令可以产生一系列伪随机比特,并保存在文件中
- req:证书的签发和管理,该指令生成证书标准的请求文件,并且可以生成自签名的根证书
- rsa:该指令对RSA密钥进行格式转换和文本解析输出等处理,格式转换的时候可以对密钥进行加密
- rsautl:非对称密钥,该指令采用rsa算法对输入数据进行签名、验证、加密和解密等操作
- s_client:SSL测试,模拟成一个客户端
- s_server:模拟一个服务器,可以对支持SSL的服务器进行调试和测试
- s_time:该指令可以用来测试建立一个SSL链接的时间
- sess_id:该指令可以处理经编码保存下来的SSLSession结构并可以根据选项打印出其中信息
- smime:该指令可以用来对S/MIME邮件进行加密、解密、签名和验证等操作
- speed:该指令测试算法的速度,如果有硬件加密设备,也可以测试硬件设备的加密速度
- spkac:该指令用于处理Netscape的签名公钥个挑战文件(SPKAC),可以验证SPKAC的签名,可以打印信息,也可用来生成SPKAC文件
- verify:证书签发和管理,该指令用来验证证书或者证书链的合法性
- version:该指令用来输出openssl的版本信息
- x509,:证书签发和管理,该指令用来显示证书内容以及签发新的证书
持续更新更新中~
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
