博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenSSL学习(四):基础-指令初试
阅读量:6587 次
发布时间:2019-06-24

本文共 2581 字,大约阅读时间需要 8 分钟。

  hot3.png

    实现了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.org down openssl吧,最新的是0.9.6版。  
    安装是很简单的。我一直用的是sun sparc的机器,所以用sun sparc的机器做例子。  
    gunzip -d openssl.0.9.6.tar.gz  
    tar -xf openssl.0.9.6.tar  
    mv openssl.0.9.6 openssl  
    cd openssl  
    ./configure --prefix=XXXXX --openssldir=XXXXXXXX  
    (这里prefix是你想安装openssl的地方, openssldir就是你tar开的openssl源码的地方。好象所有的出名点的free software都是这个操行,configure, make , make test, make install, 搞定。)  
    ./make(如果机器慢,这一步的时候可以去洗个澡,换套衣服)  
    ./make test  
    ./make install  
    OK, 如果路上没有什么问题的话,搞定。  
    经常有人报bug, 在hp-ux, sgi上装openssl出问题,我没试过,没发言权。  
    现在可以开始玩openssl了。  
    注意: 我估计openssl最开始是在linux下开发的。大家可以看一看在linxu下有这么一个文件:/dev/urandom, 在sparc下没有。这个文件有什么用?你可以随时找它要一个随机数。在加密算法产生key的时候,我们需要一颗种子:seed。这个seed就是找/dev/urandom要的那个随机数。那么在sparc下,由于没有这么一个设备,很多openssl的函数会报错:"PRNG not seeded". 解决方法是:在你的~/.profile里面添加一个变量$RANDFILE, 设置如下:  
    $RANDFILE=$HOME/.rnd  
    然后在$HOME下vi .rnd, 随便往里面乱输入一些字符,起码俩行。  
    很多openssl的函数都会把这个文件当seed, 除了openssl rsa, 希望openssl尽快修改这个bug.  
    如果用openssl做toolkit编程, 则有其他不太安全的解决方法。以后讲到openssl编程的章节会详细介绍。  
    先生成自己的私有密钥文件,比如叫server.key  
    openssl genrsa -des3 -out server.key 1024  
    genras表示生成RSA私有密钥文件,-des3表示用DES3加密该文件,1024是我们的key的长度。一般用512就可以了,784可用于商业行为了,1024可以用于军事用途了。  
    当然,这是基于现在的计算机的速度而言,可能没过几年1024是用于开发测试,2048用于一般用途了。  
    生成server.key的时候会要你输入一个密码,这个密钥用来保护你的server.key文件,这样即使人家偷走你的server.key文件,也打不开,拿不到你的私有密钥。  
    openssl rsa -noout -text -in server.key  
    可以用来看看这个key文件里面到底有些什么东西(不过还是看不懂)  
    如果你觉得server.key的保护密码太麻烦想去掉的话:  
    openssl rsa -in server.key -out server.key.unsecure  
    不过不推荐这么做  
     
下一步要得到证书了。得到证书之前我们要生成一个Certificate Signing Request.  
    CA只对CSR进行处理。  
    openssl req -new -key server.key -out server.csr  
    生成CSR的时候屏幕上将有提示,依照其指示一步一步输入要求的信息即可.  
    生成的csr文件交给CA签名后形成服务端自己的证书.怎么交给CA签名?  
    自己去www.verisign.com慢慢看吧。  
     
    如果是自己玩下,那么自己来做CA吧。openssl有很简单的方法做CA.但一般只好在开发的时候或者自己玩的时候用,真的做出产品,还是使用正规的CA签发给你的证书吧  
    在你make install之后,会发现有个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.  

     或者,用以下命令生成crt:

    openssl x509 -days 365 -req -in server.csr -signkey server.key -out server.crt

    看看我们的证书里面有些什么吧  
    openssl x509 -noout -text -in server.crt  
    玩是玩过了,openssl的指令繁多,就象天上的星星。慢慢一个一个解释吧。

转载于:https://my.oschina.net/acmfly/blog/72216

你可能感兴趣的文章
占用51cto。记录自己
查看>>
通过JDBC来理解反射机制
查看>>
嵌入式软件架构设计之分层设计
查看>>
高性能编程之IO复用之epoll
查看>>
老外写的关于协程的性能文章-主打http协议
查看>>
百词斩学习笔记
查看>>
简单的redis使用watch完成秒杀抢购功能
查看>>
Qt显示调用C++的dll
查看>>
linux虚拟机网卡无法启动
查看>>
hbase1.2.4安装
查看>>
div设置背景半透明
查看>>
JDK6和JDK7中的substring()方法
查看>>
memcache工作原理总结
查看>>
求两个整数中的最大值(不能用比较语句,循环语句)
查看>>
读《浪潮之巅》之后
查看>>
Semaphore示例
查看>>
Raid、lvm知识
查看>>
myeclipse/eclipse方法和类的自动注解
查看>>
windows上编译和安装hadoop2 (一)
查看>>
辗转相除法求最大公约数 php
查看>>