实现了SSL的软件不多,但都蛮优秀的。首先,netscape自己提出来的概念,当然自己会实现一套了。netscape的技术蛮优秀的,不过我没用过他们的ssl-toolkit.甚至连名字都没搞清楚。
1995年,eric.young开始开发openssl,那时候叫ssleay.一直到现在,openssl还在不停的修改和新版本的发行之中。openssl真够大的,我真佩服eric的水平和兴趣。这些open/free的斗士的精神是我写这个系列的主要动力,虽然写的挺烦的。
ps:eric现在去了RSA公司做,做了一个叫SSL-C的toolkit,其实和openssl差不多。估计应该比openssl稳定,区别是这个是要银子的,而且几乎所有低层的函数都不提供直接调用了。那多没意思。
去www.openssl.orgdownopenssl吧,最新的是0.9.6版。
安装是很简单的。我一直用的是sunsparc的机器,所以用sunsparc的机器做例子。
gunzip-dopenssl.0.9.6.tar.gz
tar-xfopenssl.0.9.6.tar
mvopenssl.0.9.6openssl
cdopenssl
./configure--prefix=XXXXX--openssldir=XXXXXXXX
(这里prefix是你想安装openssl的地方,openssldir就是你tar开的openssl源码的地方。好象所有的出名点的freesoftware都是这个操行,configure,make,maketest,makeinstall,搞定。)
./make(如果机器慢,这一步的时候可以去洗个澡,换套衣服)
./maketest
./makeinstall
OK,如果路上没有什么问题的话,搞定。
经常有人报bug,在hp-ux,sgi上装openssl出问题,我没试过,没发言权。
现在可以开始玩openssl了。
注意:我估计openssl最开始是在linux下开发的。大家可以看一看在linxu下有这么一个文件:/dev/urandom,在sparc下没有。这个文件有什么用?你可以随时找它要一个随机数。在加密算法产生key的时候,我们需要一颗种子:seed。这个seed就是找/dev/urandom要的那个随机数。那么在sparc下,由于没有这么一个设备,很多openssl的函数会报错:"PRNGnotseeded".解决方法是:在你的~/.profile里面添加一个变量$RANDFILE,设置如下:
$RANDFILE=$HOME/.rnd
然后在$HOME下vi.rnd,随便往里面乱输入一些字符,起码俩行。
很多openssl的函数都会把这个文件当seed,除了opensslrsa,希望openssl尽快修改这个bug.
如果用openssl做toolkit编程,则有其他不太安全的解决方法。以后讲到openssl编程的章节会详细介绍。
先生成自己的私有密钥文件,比如叫server.key
opensslgenrsa-des3-outserver.key1024
genras表示生成RSA私有密钥文件,-des3表示用DES3加密该文件,1024是我们的key的长度。一般用512就可以了,784可用于商业行为了,1024可以用于军事用途了。
当然,这是基于现在的计算机的速度而言,可能没过几年1024是用于开发测试,2048用于一般用途了。
生成server.key的时候会要你输入一个密码,这个密钥用来保护你的server.key文件,这样即使人家偷走你的server.key文件,也打不开,拿不到你的私有密钥。
opensslrsa-noout-text-inserver.key
可以用来看看这个key文件里面到底有些什么东西(不过还是看不懂)
如果你觉得server.key的保护密码太麻烦想去掉的话:
opensslrsa-inserver.key-outserver.key.unsecure
不过不推荐这么做
下一步要得到证书了。得到证书之前我们要生成一个CertificateSigningRequest.
CA只对CSR进行处理。
opensslreq-new-keyserver.key-outserver.csr
生成CSR的时候屏幕上将有提示,依照其指示一步一步输入要求的信息即可.
生成的csr文件交给CA签名后形成服务端自己的证书.怎么交给CA签名?
自己去www.verisign.com慢慢看吧。
如果是自己玩下,那么自己来做CA吧。openssl有很简单的方法做CA.但一般只好在开发的时候或者自己玩的时候用,真的做出产品,还是使用正规的CA签发给你的证书吧
在你makeinstall之后,会发现有个misc的目录,进去,运行CA.sh-newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。没有这个文件?按回车创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private/cakey.pem就是CA的key文件啦,
./demoCA/cacert.pem就是CA的crt文件了。把自己创建出来的server.crt文件copy到misc目录下,mv成newreq.pem,然后执行CA.sh-sign,ok,
得到回来的证书我们命名为server.crt.
看看我们的证书里面有些什么吧
opensslx509-noout-text-inserver.crt
玩是玩过了,openssl的指令繁多,就象天上的星星。慢慢一个一个解释吧。
分享到:
相关推荐
这个文档是广州全通数码科技有限公司软件技术部内部资料,旨在为读者提供一个中文版的 OpenSSL 知识概述。 1. **前言** 前言部分通常会介绍 OpenSSL 的重要性,它在网络安全中的角色,以及为何需要理解和使用 ...
文档"openssl编程入门(含完整示例).doc"很可能是对OpenSSL编程的详细指南,包含了逐步的教程和实际代码示例,对于初学者来说是非常宝贵的资源。通过学习这个文档,读者可以学习如何在自己的项目中集成OpenSSL,实现...
1. **安装指南**:中文帮助文档通常会包含如何下载、编译和安装 OpenSSL 的步骤,对于初学者来说,这是非常实用的入门资料。 2. **API 文档**:详细的 API 文档解释了各个函数的用途、参数和返回值,有助于开发者...
"OpenSSL-SDK.chm" 文件很可能包含了详细的开发手册,涵盖从基本概念到高级特性的所有内容。这份文档通常会包含以下部分: 1. **入门教程**:引导开发者快速了解 OpenSSL 的基本用法和开发流程。 2. **API 参考**...
《最全最新中文PHP手册》不仅适合初学者入门,也是经验丰富的开发者的重要参考。通过深入学习和实践,开发者可以充分利用PHP的潜力,开发出高效、稳定的Web应用程序。手册中的实例代码和注释有助于加深理解,提升...
### Buildroot中文用户手册知识点概览 #### 一、关于Buildroot **Buildroot**是一个自动化构建嵌入式Linux系统的工具。它可以帮助开发者快速构建一个完整的Linux发行版,包括交叉编译工具链、Linux内核、文件系统...
王远之 肖理达 肖盛文 黄啸宇 宋琪 陈伯乐 刘铭 崔岩 2005-09-12 版权 © 1997-2005 PHP 文档组 -------------------------------------------------------------------------------- 前言 作者和贡献者 I. ...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
《QGroundControl中文手册》是针对使用ArduPilot或PX4飞控系统的无人机操作者的一份详尽指南。QGroundControl是一款强大的地面控制站软件,它提供了全面的飞行控制和车辆配置功能,旨在使新手易于上手,同时也满足...
1. 简介 2. 简明教程 3. 安装 4. 运行时配置 II. 语言参考 5. 基本语法 6. 类型 7. 变量 8. 常量 9. 表达式 10. 运算符 11. 流程控制 12. 函数 13. 类与对象 14. 引用的解释 III. 安全 15. 安全 IV. 特点 16. 用 ...
王远之 肖理达 肖盛文 黄啸宇 宋琪 陈伯乐 刘铭 崔岩 2005-11-18 版权 © 1997-2005 PHP 文档组 -------------------------------------------------------------------------------- 前言 作者和贡献者 I. ...
《PHP中文黄金手册》是PHP开发者的重要参考资料,它包含了PHP 5.4版本的最新内容。这份手册旨在提供易查、实惠的开发辅助,对于构建网站的PHP开发者来说,是不可或缺的选择。 手册分为多个部分,详细阐述了PHP编程...
PHP官方手册中文版 PHP 手册 Mehdi Achour Friedhelm Betz Antony Dovgal Nuno Lopes Philip Olson Georg Richter Damien Seguy Jakub Vrana 编辑 Gabor Hojtsy 目录 前言 作者和贡献者 I. 入门...
### Laravel 5.4 中文文档知识点概览 #### 一、引言 - **Laravel** 是一个基于 PHP 的 Web 开发框架,以其简洁、优雅的语法著称,能够帮助开发者快速构建高性能的 Web 应用程序。 - **Laravel 5.4** 版本进一步...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9. 运行时配置 III. 语言参考 ...
OpenSSL — OpenSSL Functions Oracle — Oracle 函数(已废弃) Oracle (PDO) — Oracle Functions (PDO_OCI) Output Control — Output Control 输出控制函数 OvrimosSQL — Ovrimos SQL Functions Paradox — ...