频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

OpenSSL FAQ

来源:ChinaITLab 作者: 出处:巧巧读书 2006-08-08 进入讨论组

  OpenSSL  -  经常问到的问题
  --------------------------------------
  
  * 目前的 OpenSSL 的版本是什么?
  * 文档在哪里?
  * 我怎样和 OpenSSL 的开发人员联系?
  * 要使用 OpenSSL 我需要申请专利许可证吗?
  * OpenSSL 线程安全吗?
  * 为什么我收到 "PRNG not seeded" 这样的错误信息?
  * 为什么链接器抱怨说有未定义的符号?
  * 我在哪里能得到编译好了的 OpenSSL 版本?
  * 我在 Windows 下编译了一个程序,可它崩溃了:为什么?
  * 怎样使用ASN1的函数读写DER编码的缓冲区?
  * 我想使用  这样的宏,但却给我一个错误,为什么?
  * 我调用了 <某个函数> 但是却失败了,为什么?
  * 我的错误输出只是一大堆数字,它们是什么意思?
  * 为什么我收到什么未知算法的错误信息?
  * 怎么创建证书或者认证请求?
  * 我为什么不能创建认证请求?
  * 为什么  会因为证书认证错误而失败?
  * 为什么我与使用OpenSSL的服务器联接的时候总是只能使用弱加密?
  * 我怎样才能创建DSA证书?
  * 为什么我不能和一台使用DSA证书的服务器建立SSL联接?
  * 我怎么才能删除一个私钥上的口令保护?
  * 为什么OpenSSH 的 configure 脚本不能检测到 OpenSSL?
  * 为什么 OpenSSL 测试带着 "bc: command not found" 信息失败?
  * 为什么 OpenSSL 测试带着 "bc: 1 no implemented信息失败?
  * 为什么 OpenSSL 在 Alpha True64 Unix 上编译失败?
  * 为什么 OpenSSL 带着"ar: command not found" 这样的错误信息编译失败?
  
  
  * 目前的 OpenSSL 的版本是什么?
  
  目前的版本可以从获得.OpenSSL 0.9.6 在
  2000 年 9 月 24 日发布.
  
  除了当前的稳定版本以外,你还可以获取 OpenSSL 的每日开发快照,在
  ,或者你也可以通过匿名 CVS 访问
  获取.
  
  
  * 文档在哪里?
  
  OpenSSL 是一个库,它为类似安全 web 服务器这样的应用提供加密功能.
  请仔细阅读你想用的应用的文档.INSTALL 文件解释了如何安装这个库的问题.
  
  OpenSSL 包含一个可以用于执行加密功能的命令行工具.在 openssl(1) 手册页
  里有描述.给开发人员使用的文档正在写.有几个手册页已经可以用了;libcrypto
  和 libssl 库的概述在 crypto(3) 和 ssl(3)的手册页里描述.
  
  OpenSSL 手册页安装在 /usr/local/ssl/man (或者你象 INSTALL 里描述的那样声明
  的另外一个目录).另外,你可以在阅读大多数
  当前版本的文档.
  
  有关 libcrypto 里面的部件的更多内容,你可以阅读 Ariel Glenn 的关于 SSLeay 0.9
  的文档,它是 OpenSSL 的前身,它的文档在 
  
  
  
  那些文档中有许多仍然适用于 OpenSSL.
  
  在 doc/openssl.txt 里有一些关于证书扩展和 PKCS#12 的文档.
  
  最早的 SSLeay 的文档放在 OpenSSL 的 doc/ssleay.txt 里.如果其他的资源都
  不能帮助你的话,那么它也许有用,不过你一定要知道它反映的是过时的 SSLeay
  0.6.6 的版本.
  
  
  * 我怎样和 OpenSSL 的开发人员联系?
  
  README 文件描述了如何向 OpenSSL 提交臭虫报告和补丁.OpenSSL 邮件列表
  的信息可以在  获得.
  
  
  * 要使用 OpenSSL 我需要申请专利许可证吗?
  
  README 文件的专利(patent)段列出了你使用OpenSSL时可能要遵循的专利.
  请咨询一位律师获取关于版权的信息.OpenSSL 开发组不提供法律建议.
  
  你可以配置你的 OpenSSL 不使用 RC5 和 IDEA.用下面的命令:
   ./config no-rc5 no-idea
  
  
  * OpenSSL 线程安全吗?
  
  是(有一个局限:一次 SSL 联接不能使用多线程进行并发).在 Windows 和许多
  Unix 系统上,OpenSSL 自动使用标准库的多线程版本.如果你的平台不是这些平台
  之一,请参考 INSTALL 文件.
  
  多线程应用必须给 OpenSSL 提供两个回调函数.这些都在 thread(3) 手册页里描述.
  
  
  * 为什么我收到 "PRNG not seeded" 这样的错误信息?
  
  
  加密软件需要一个非周期的数据源才能正确运转.
  许多开放源码的操作系统提供一个"随机设备"为这个用途服务.而在其他系统上,
  应用在生成密钥或者执行公钥加密之前必须用合适的数据调用 RAND_add()或 
  RAND_seed()函数.
  
  有些有缺陷的应用不做这件事.到版本 0.9.5,OpenSSL 里面的需要随机数
  的函数如果在随机数发生器没有收到一个128位的随机值就会报一个错误.
  如果出现这个错误,请与你使用的应用的作者联系.很可能是他/她就没有正确
  使用这些东西.OpenSSL 0.9.5 和以后的版本会拒绝执行那些有潜在的不安全加密
  的动作,以此把错误显示出来.
  
  在没有 /dev/urandom 的系统上,使用熵收集守护(Entropy Gathering Demon)
  也是一个好计策);参阅 RAND_egd() 的手册页获取细节.
  
  大多数 openssl 的命令行工具会试图使用文件 $HOME/.rnd (或者 $RANDFILE,
  --如果设置了这个环境变量)用做产生 PRNG 种子.如果这个文件不存在或者太短,
  就有可能出现那个 "PRNG not seeded" 错误信息.
  
  [ OpenSSL 0.9.5 的用户注意了:版本0.9.5的命令"openssl rsa"
  并不做这件事,并且在那些没有 /dev/urandom 的系统上用口令加密一个
  RSA密钥时会失效!这是一个库里面的臭虫;请使用更高版本的软件.]
  
  对于 Solaris 2.6 而言,Tim Nibbe  和另外一些人建议
  安装 SUNski 包.该包来自 Sun 补丁 105710-01 (Sparc),它会增加一个
  /dev/random 设备并确保其投入使用,通常是通过 $RANDFILE.其他 Solaris
  版本也可能有类似补丁.不过,我们必须警告你 /dev/random 通常是一个块设备,
  这一点可能对 OpenSSL 有些影响.
  
  
  * 为什么链接器抱怨说有未定义的符号?
  
  
  可能是因为编译中断了,而且 make 没有认识到还缺少某些东西.运行
  "make clean; make".
  
  如果你用的是 ./Configure 而不是 ./config,请确信你选用了正确的目标机器.
  
  在不同的 OS 版本之间的文件格式可能有些许区别(比如 sparcv8/sparcv9,
  或者 a.out/elf).
  
  如果你看到的错误信息包含下面的符号,请使用 "no-asm" 配置选项,
  就象 INSTALL 里描述的那样:
  
   BF_cbc_encrypt, BF_decrypt, BF_encrypt, CAST_cbc_encrypt,
   CAST_decrypt, CAST_encrypt, RC4, RC5_32_cbc_encrypt, RC5_32_decrypt,
   RC5_32_encrypt, bn_add_words, bn_div_words, bn_mul_add_words,
   bn_mul_comba4, bn_mul_comba8, bn_mul_words, bn_sqr_comba4,
   bn_sqr_comba8, bn_sqr_words, bn_sub_words, des_decrypt3,
   des_ede3_cbc_encrypt, des_encrypt, des_encrypt2, des_encrypt3,
   des_ncbc_encrypt, md5_block_asm_host_order, sha1_block_asm_data_order
  
  如果这些东西都不能帮你解决问题,那你可以试试当前的快照(源程序).
  如果问题依旧,请提交一个错误报告.
  
  
  * 我在哪里能得到编译好了的 OpenSSL 版本?
  
  有些使用 OpenSSL 的应用是以二进制的形式发布的.当使用这样的应用时,
  你不需要自己安装 OpenSSL;该应用会包含所需要的部分(比如,DLL)
  
  如果你想在 Windows 系统上安装 OpenSSL,但是你没有 C 编译器,请阅读
  INSTALL.W32 里的 "mingw32" 节,获取如何获取和安装自由的 GNU C 编译器的信息.
  
  许多 Linux 和 *BSD 发布版带有 OpenSSL.
  
  
  * 我在 Windows 下编译了一个程序,可它崩溃了:为什么?
  
  通常是因为你忽略了 INSTALL.W32 里的注解.你必须和多线程版本的 VC++ 运行时间
  DLL 库链接,否则冲突会导致程序崩溃:通常是在第一次 BIO 相关的读写操作的时候.
  
  
  * 怎样使用ASN1的函数读写DER编码的缓冲区?
  
  你有两个选择.一个是用一个内存BIO和 i2d_XXX_bio()或 d2i_XX_bio()一起使用,
  另一个是你可以直接使用 i2d_XXX(),d2i_XXX() 函数.
  因为这个问题是最常见的导致痛苦的问题,所以我们在这里包含了一个使用PKCS7
  的代码片段做例子:(靠,我花了整整一周读程序才找到方法,眼前一黑...)
  
  unsigned char *buf, *p;
  int len;
  
  len = i2d_PKCS7(p7, NULL);
  buf = OPENSSL_malloc(len); /* or Malloc, error checking omitted */
  p = buf;
  i2d_PKCS7(p7, &p);通告:http://www.qqread.com/net-saft/b197048.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
较早的文章:网络监听概念

较新的文章:SSL(安全套层)协议
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章