零全零美(www.zzgwt.com)
          生活中的很多事情,并不像If...Else那么簡單!
          posts - 96,comments - 52,trackbacks - 0
          openssl簡介-入門
          實(shí)現(xiàn)了SSL的軟件不多,但都蠻優(yōu)秀的。首先,netscape自己提出來的概念,當(dāng)然自己會(huì)實(shí)現(xiàn)一套了。netscape的技術(shù)蠻優(yōu)秀的,不過我沒用過他們的ssl-toolkit.甚至連名字都沒搞清楚。
          1995年,eric.young開始開發(fā)openssl, 那時(shí)候叫ssleay.一直到現(xiàn)在,openssl還在不停的修改和新版本的發(fā)行之中。openssl真夠大的,我真佩服eric的水平和興趣。這些open/free的斗士的精神是我寫這個(gè)系列的主要?jiǎng)恿?,雖然寫的挺煩的。
          ps: eric現(xiàn)在去了RSA公司做,做了一個(gè)叫SSL-C的toolkit, 其實(shí)和openssl差不多。估計(jì)應(yīng)該比openssl穩(wěn)定,區(qū)別是這個(gè)是要銀子的,而且?guī)缀跛械蛯拥暮瘮?shù)都不提供直接調(diào)用了。那多沒意思。
          去www.openssl.org down openssl吧,最新的是0.9.6版。
          安裝是很簡單的。我一直用的是sun sparc的機(jī)器,所以用sun sparc的機(jī)器做例子。
          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源碼的地方。好象所有的出名點(diǎn)的free software都是這個(gè)操行,configure, make , make test, make install, 搞定。)
          ./make(如果機(jī)器慢,這一步的時(shí)候可以去洗個(gè)澡,換套衣服)
          ./make test
          ./make install
          OK, 如果路上沒有什么問題的話,搞定。
          經(jīng)常有人報(bào)bug, 在hp-ux, sgi上裝openssl出問題,我沒試過,沒發(fā)言權(quán)。
          現(xiàn)在可以開始玩openssl了。
          注意: 我估計(jì)openssl最開始是在linux下開發(fā)的。大家可以看一看在linxu下有這么一個(gè)文件:/dev/urandom, 在sparc下沒有。這個(gè)文件有什么用?你可以隨時(shí)找它要一個(gè)隨機(jī)數(shù)。在加密算法產(chǎn)生key的時(shí)候,我們需要一顆種子:seed。這個(gè)seed就是找/dev/urandom要的那個(gè)隨機(jī)數(shù)。那么在sparc下,由于沒有這么一個(gè)設(shè)備,很多openssl的函數(shù)會(huì)報(bào)錯(cuò):"PRNG not seeded". 解決方法是:在你的~/.profile里面添加一個(gè)變量$RANDFILE, 設(shè)置如下:
          $RANDFILE=$HOME/.rnd
          然后在$HOME下vi .rnd, 隨便往里面亂輸入一些字符,起碼倆行。
          很多openssl的函數(shù)都會(huì)把這個(gè)文件當(dāng)seed, 除了openssl rsa, 希望openssl盡快修改這個(gè)bug.
          如果用openssl做toolkit編程, 則有其他不太安全的解決方法。以后講到openssl編程的章節(jié)會(huì)詳細(xì)介紹。
          先生成自己的私有密鑰文件,比如叫server.key
          openssl genrsa -des3 -out server.key 1024
          genras表示生成RSA私有密鑰文件,-des3表示用DES3加密該文件,1024是我們的key的長度。一般用512就可以了,784可用于商業(yè)行為了,1024可以用于軍事用途了。
          當(dāng)然,這是基于現(xiàn)在的計(jì)算機(jī)的速度而言,可能沒過幾年1024是用于開發(fā)測試,2048用于一般用途了。
          生成server.key的時(shí)候會(huì)要你輸入一個(gè)密碼,這個(gè)密鑰用來保護(hù)你的server.key文件,這樣即使人家偷走你的server.key文件,也打不開,拿不到你的私有密鑰。
          openssl rsa -noout -text -in server.key
          可以用來看看這個(gè)key文件里面到底有些什么東西(不過還是看不懂)
          如果你覺得server.key的保護(hù)密碼太麻煩想去掉的話:
          openssl rsa -in server.key -out server.key.unsecure
          不過不推薦這么做

          下一步要得到證書了。得到證書之前我們要生成一個(gè)Certificate Signing Request.
          CA只對(duì)CSR進(jìn)行處理。
          openssl req -new -key server.key -out server.csr
          生成CSR的時(shí)候屏幕上將有提示,依照其指示一步一步輸入要求的信息即可.
          生成的csr文件交給CA簽名后形成服務(wù)端自己的證書.怎么交給CA簽名?
          自己去www.verisign.com慢慢看吧。

          如果是自己玩下,那么自己來做CA吧。openssl有很簡單的方法做CA.但一般只好在開發(fā)的時(shí)候或者自己玩的時(shí)候用,真的做出產(chǎn)品,還是使用正規(guī)的CA簽發(fā)給你的證書吧
          在你make install之后,會(huì)發(fā)現(xiàn)有個(gè)misc的目錄,進(jìn)去,運(yùn)行CA.sh -newca,他會(huì)找你要CA需要的一個(gè)CA自己的私有密鑰密碼文件。沒有這個(gè)文件?按回車創(chuàng)建,輸入密碼來保護(hù)這個(gè)密碼文件。之后會(huì)要你的一個(gè)公司信息來做CA.crt文件。最后在當(dāng)前目錄下多了一個(gè)./demoCA這樣的目錄../demoCA/private/cakey.pem就是CA的key文件啦,
          ./demoCA/cacert.pem就是CA的crt文件了。把自己創(chuàng)建出來的server.crt文件copy到misc目錄下,mv成newreq.pem,然后執(zhí)行CA.sh -sign, ok,
          得到回來的證書我們命名為server.crt.

          看看我們的證書里面有些什么吧
          openssl x509 -noout -text -in server.crt
          玩是玩過了,openssl的指令繁多,就象天上的星星。慢慢一個(gè)一個(gè)解釋吧。

          posted on 2009-11-27 17:32 零全零美 閱讀(428) 評(píng)論(0)  編輯  收藏 所屬分類: 安全相關(guān)
          主站蜘蛛池模板: 新竹市| 呼和浩特市| 柯坪县| 孟村| 定陶县| 永寿县| 普陀区| 安陆市| 临沧市| 历史| 华池县| 桃园市| 山西省| 滦南县| 天镇县| 唐山市| 海晏县| 德格县| 牡丹江市| 肇源县| 疏附县| 华坪县| 虹口区| 谢通门县| 英山县| 玉龙| 邹城市| 乃东县| 霍州市| 济南市| 广元市| 贡觉县| 娱乐| 安义县| 梧州市| 剑河县| 贵阳市| 若尔盖县| 伊吾县| 洛南县| 德保县|