OpenSSL 1.0.1g 7 Apr 2014
版权所有 (c) 1998-2011 OpenSSL 项目 版权所有 (c) 1995-1998 Eric A. Young、Tim J. Hudson 保留所有权利。
OpenSSL 项目是一项协同努力,旨在开发一个健壮、商业级、功能齐全的开源工具包,实现 安全套接字层(SSL v2/v3)和传输层安全(TLS v1)协议,以及一个功能强大的通用密码学库。 该项目由全球志愿者社区管理,他们使用 互联网进行沟通、规划和开发 OpenSSL 工具包及其 相关文档。
OpenSSL 基于优秀的 SSLeay 库,该库由 Eric A. Young 和 Tim J. Hudson 开发。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
的一部分。它包括 DES 的 15 种“模式/变体”
(1、2 和 3 密钥版本的 ecb、cbc、cfb 和 ofb;
以及 pcbc 和 cfb、ofb 的更一般形式),包括 desx
的 cbc 模式、一个快速的 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 输入输出系统是一个简单的非阻塞
输入输出抽象。当前支持的方法包括文件描述符、
套接字、套接字接受、套接字连接、内存缓冲区、缓冲、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 和三菱拥有 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 向 OpenSSL 项目报告错误 (http://www.openssl.org/support/rt.html),邮件发送至:
请注意,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 [sic] 以及 http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR 第 740.13(e) 条) 以了解详情。如果“您的加密源代码太大,无法作为 电子邮件附件发送”,他们也乐意通过传真接收;希望您 有一个便宜的长途电话套餐。
我们首选的变更格式是“diff -u”输出。您可以 这样生成它: