Files
kernel_Notes/Zim/Utils/openssl.txt
2012-08-08 15:17:56 +08:00

90 lines
6.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.4
Creation-Date: 2011-05-22T21:55:34+08:00
====== openssl ======
Created Sunday 22 May 2011
http://hi.baidu.com/dkf198314/blog/item/6336ed1c37af0c1540341723.html
openssl+ca认证
2009-12-08 15:09
OpenSSL证书生成2009-06-01 17:55利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.下面以C/S模式说明证书文件的生成步骤:
证书文件生成:
一.服务器端
1.生成服务器端的私钥(key文件);
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文 件(通过openssl提供的命令或API)都需输入口令.如果不要口令,则可用以下命令去除口令:
openssl rsa -in server.key -out server.key
2.生成服务器端证书签名请求文件(csr文件);
openssl req -new -key server.key -out server.csr
生成Certificate Signing RequestCSR,生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其 提示一步一步输入要求的个人信息即可(如:Country,province,city,company等).
二.客户端
1.对客户端也作同样的命令生成key及csr文件;
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
三.生成CA证书文件
server.csr与client.csr文件必须有CA的签名才可形成证书.
1.首先生成CA的key文件:
openssl genrsa -des3 -out ca.key 1024
2.生成CA自签名证书:
openssl req -new -x509 -key ca.key -out ca.crt
可以加证书过期时间选项 "-days 365".
四.利用CA证书进行签名
用生成的CA证书为server.csr,client.csr文件签名,利用openssl中附带的CA.pl文件(在安装目录中openssl/apps目录下),
1.ca.pl -newca, 在提示输入已有的证书文件时,输入上面已生成的ca.crt证书文件;
2.生成服务端证书文件
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
3.生成客户端证书文件
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
必须保证openssl.cnf在当前目录下,这个文件可以在apps目录中找到.
操作完毕,server.key,server.crt;client.key,client.crt;ca.key,ca.crt将在项目中被用到.
证书文件生成
也许很多人和本人一样深有体会使用OpenSSL库写一个加密通讯过程代码很容易就写出来了可是整个工作却花了了好几天。除将程序编译成功外没有可以使用的证书文件编译成功了它并不能跑起来并不表示它能正常使用所以......,还需生成必要的证书和私钥文件使双方能够成功验证对方。
找了n多的资料很多是说的很模糊看了n多的英文资料还是没有办法不知道是不是外国朋友都比较厉害不用说明得太清无意间找到yawl(yawl@nsfocus.com)写的文章,难得的汉字(呵呵)。里面有生成证书部分,说到生成了 Certificate Signing Request (CSR)文件后就有点不太清楚了。后面生成自签字证书在很多地方都可以找到的签名这部分yawl说mod_ssl有比较好的脚本但是笔者一时找不到就自己用openssl的ca命令来完成了也不是很麻烦。
说说本人的操作环境无盘工作站有权限问题使用起来不太方便操作目录是openssl/bin没办法改不了环境变量如果你可以改的话就不用在这个目录下工作了为了方便本人把apps下的openssl.cnf也复制到了这个目录下来。文件名都是以本人使用的来说了
1.首先要生成服务器端的私钥(key文件):
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
2.openssl req -new -key server.key -out server.csr -config openssl.cnf
生成Certificate Signing RequestCSR,生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
3.对客户端也作同样的命令生成key及csr文件:
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf
4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
现在我们所需的全部文件便生成了.
另:
client使用的文件有ca.crt,client.crt,client.key
server使用的文件有ca.crt,server.crt,server.key
.crt文件和.key可以合到一个文件里面本人把2个文件合成了一个.pem文件直接拷贝过去就行了
合并证书文件crt和私钥文件key
cat client.crt client.key > client.pem
cat server.crt server.key > server.pem