OpenSSL 1.0.1g 2014年4月7日
版权所有 (c) 1998-2011 The OpenSSL Project 版权所有 (c) 1995-1998 Eric A. Young, Tim J. Hudson 保留所有权利。
OpenSSL项目是一项协作努力,旨在开发一个健壮、商业级、功能齐全的开源工具包,实现安全套接层(SSL v2/v3)和传输层安全(TLS v1)协议,以及一个全功能的通用密码库。该项目由一个全球志愿者社区管理,他们通过互联网进行沟通、规划和开发OpenSSL工具包及其相关文档。
OpenSSL基于Eric A. Young和Tim J. Hudson开发的优秀SSLeay库。OpenSSL工具包采用双重许可(OpenSSL许可加上SSLeay许可)的情况,这基本上意味着只要您满足两个许可的条件,就可以自由获取并将其用于商业和非商业目的。
OpenSSL工具包包括:
libssl.a: 实现SSLv2、SSLv3、TLSv1以及在一个服务器和客户端中同时支持SSLv2、SSLv3和TLSv1所需的代码。
libcrypto.a: SSL/TLS所需的通用加密和X.509 v1/v3相关内容,但并非逻辑上的一部分。它包括以下例程:
密码
libdes - EAY的libdes DES加密包,它在网络上流传了几年,然后被重新许可为SSLeay的一部分。它包括15种DES的“模式/变体”(1、2和3密钥版本的ecb、cbc、cfb和ofb;pcbc以及cfb和ofb的更通用形式),包括cbc模式下的desx、快速crypt(3)以及从键盘读取密码的例程。
RC4加密,
RC2加密 - 4种不同模式:ecb、cbc、cfb和ofb。
Blowfish加密 - 4种不同模式:ecb、cbc、cfb和ofb。
IDEA加密 - 4种不同模式:ecb、cbc、cfb和ofb。
摘要
MD5和MD2消息摘要算法,快速实现,
SHA(SHA-0)和SHA-1消息摘要算法,
MDC2消息摘要。一种基于DES的哈希,在智能卡上很流行。
公钥
RSA加密/解密/生成。
比特数没有限制。
DSA加密/解密/生成。
比特数没有限制。
Diffie-Hellman密钥交换/生成。
比特数没有限制。
X.509v3证书
X509编码/解码到/从二进制ASN1以及基于PEM的ASCII二进制编码,支持使用私钥加密。生成RSA和DSA证书请求以及生成RSA和DSA证书的程序。
系统
标准的数字信封例程和base64编码。按名称对密码和摘要的更高级别访问。可以在运行时加载新的密码。BIO I/O系统是一个简单的非阻塞I/O抽象。当前支持的方法包括文件描述符、套接字、套接字接受、套接字连接、内存缓冲区、缓冲、SSL客户端/服务器、文件指针、加密、摘要、非阻塞测试和空。
数据结构
动态增长的哈希系统
一个简单的栈。
一个使用类似MS .ini文件格式的配置加载器。
openssl: 一个命令行工具,可用于: 创建RSA、DH和DSA密钥参数 创建X.509证书、CSR和CRL 计算消息摘要 使用密码进行加密和解密 SSL/TLS客户端和服务器测试 处理S/MIME签名或加密的邮件
各公司在世界各地拥有各种算法的各种专利。_您_负责通过检查您所在国家是否有专利来确保您使用任何算法的合法性。该文件包含我们已知或传闻存在的一些专利。这并不是一个完整的列表。
RSA Security持有RC5算法的软件专利。如果您打算使用此密码,必须联系RSA Security获取许可条件。他们的网页是 http://www.rsasecurity.com/。
RC4是RSA Security的商标,因此此标签的使用可能只应在RSA Security的许可下进行。
IDEA算法由Ascom在奥地利、法国、德国、意大利、日本、荷兰、西班牙、瑞典、瑞士、英国和美国获得专利。如果要使用该算法,应联系他们;他们的网页是 http://www.ascom.ch/。
NTT和Mitsubishi拥有Camellia算法的专利和待批专利,但允许免费使用,无需明确的许可协议:http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
要在Unix衍生系统上安装此软件包,请阅读INSTALL文件。对于Win32平台,请阅读INSTALL.W32文件。对于OpenVMS系统,请阅读INSTALL.VMS。
阅读doc/目录中的文档。文档相当粗糙,但列出了函数;您可能需要查看代码以了解如何使用它们。查看示例程序。
对于某些平台,存在一些已知问题可能影响用户或应用程序作者。我们尝试在doc/PROBLEMS中收集这些问题,并附带当前关于如何在OpenSSL未来版本中解决的思考。
有关如何获取商业技术支持,请参阅OpenSSL网站 www.openssl.org。
如果您遇到OpenSSL的任何问题,请首先执行以下步骤:
- 从 ftp://ftp.openssl.org/snapshot/ 下载当前快照以检查问题是否已解决
- 移除库的ASM版本
- 移除编译器优化标志
如果您想报告一个错误,请在错误报告中包含以下信息:
- 在Unix系统上:
由'make report'生成的自我测试报告
- 在其他系统上:
OpenSSL版本:'openssl version -a'的输出
操作系统名称、版本、硬件平台
编译器详细信息(名称、版本)
- 应用程序详细信息(名称、版本)
- 问题描述(如果已知,请提供重现问题的步骤)
- 堆栈回溯(如果应用程序转储核心)
通过Request Tracker(http://www.openssl.org/support/rt.html)发送邮件到以下地址向OpenSSL项目报告错误:
请注意,Request Tracker不应用于一般协助或支持查询。仅仅因为某些东西没有按预期工作并不一定意味着是OpenSSL中的错误。
请注意,发送到[email protected]的邮件会记录在公开可读的Request Tracker数据库中,并转发到公共邮件列表。机密邮件可发送至[email protected](PGP密钥可从密钥服务器获取)。
开发工作通过openssl-dev邮件列表协调(参见http://www.openssl.org了解订阅信息)。如果您想提交补丁,请将其发送至[email protected],主题中包含字符串"[PATCH]"。请确保包含对补丁功能的文字说明。
如果您不确定某个功能是否对OpenSSL社区普遍有用,请先在openssl-dev邮件列表上讨论。可能已经有人在做同样的事情,或者有充分的理由说明为什么该功能未实现。
补丁应尽可能最新,最好相对于当前Git或最新快照。它们应遵循OpenSSL的编码风格,并编译无警告。一些核心团队开发人员目标可用于测试目的(debug-steve64、debug-geoff等)。OpenSSL在许多不同平台上编译:请确保只使用可移植的特性。
注意:出于法律原因,只有满足以下条件才能接受来自美国的贡献:将TSU通知和补丁副本发送至[email protected](原BXA),并抄送给ENC加密请求协调员;请花些时间查看以下网址了解详情: http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [原文如此] 和 http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Section 740.13(e)) 如果“您的加密源代码太大而无法作为电子邮件附件发送”,他们很乐意通过传真接收;希望您有便宜的长途电话计划。
我们首选的更改格式是“diff -u”输出。您可以按如下方法生成: