OpenSSL 1.0.1g 7 Apr 2014
Copyright (c) 1998-2011 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson All rights reserved.
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 的“模式/变体”(ecb、cbc、cfb 和 ofb 的 1、2 和 3 密钥版本;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 IO 系统是一个简单的非阻塞 IO 抽象。当前支持的方法包括:文件描述符、套接字、套接字接受、套接字连接、内存缓冲区、缓冲、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' 的输出
操作系统名称、版本、硬件平台
编译器详细信息(名称、版本)
- 应用程序详细信息(名称、版本)
- 问题描述(如果已知,重现问题的步骤)
- 堆栈回溯(如果应用程序转储核心)
通过请求跟踪器(http://www.openssl.org/support/rt.html)将错误报告给 OpenSSL 项目,发送邮件至:
请注意,请求跟踪器不应用于一般帮助或支持查询。仅仅因为某些东西没有按预期工作,并不一定意味着它是 OpenSSL 中的错误。
请注意,发送到 [email protected] 的邮件会被记录在可公开读取的请求跟踪器数据库中,并转发到公共邮件列表。机密邮件可发送至 [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 [sic] 和 http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR 第 740.13(e) 节) 以了解详情。如果“您的加密源代码太大,无法作为电子邮件附件发送”,他们很乐意通过传真接收;希望您有一个便宜的长期通话计划。
我们首选的更改格式是 "diff -u" 输出。您可以像这样生成它: