Linux下安装OpenSSL练手文档
这段日子需要熟悉OpenSSL ,于是找了一些网上资料,开始在Linux 环境下搭建OpenSSL 环境,并尝试实验一些小例子,可是从网上找到很多文档 貌似都源于一个哥们的总结,但是貌似那个文档中有的地方实在是理解不了,后来发现,是少了一步,汗,这是经过多次查阅后得到的结果,于是将这个补充后能够全部运行的文档整理如下,希望能对需要了解OpenSSL 的兄弟有所帮助:
一、安装 Openssl
Ø 下载 openssl 源代码:
² wget http://www.openssl.org/source/ openssl-0.9.8k.tar.gz
Ø 解压缩:
² tar zxvf openssl-0.9.8k.tar.gz
Ø 设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
² cd openssl-0.9.8k
² ./config --prefix=/root/openssl
Ø 编译 Openssl:
² make
Ø 安装 Openssl:
² make install
Ø 修改配置文件:
² cat ~/openssl/ssl/openssl.cnf
² 修改其中的配置内容
1) dir= /home/blave/openssl/ssl/misc/demoCA # 设定存取凭证的路径, 并将blave 改成您自己
2) default_days= 3650 # 设定凭证可使用之天数
3) default_bits = 2048 # 设定密钥长度(bits)
二、产生 CA 凭证
Ø 我们所产生的 CA 凭证,将放置在 ~/openssl/ssl/misc/demoCA 下,以下我们将介绍怎样产生出最上层的 CA 凭证。
Ø 执行CA 凭证产生程式:
² cd ~/openssl/ssl/misc
² ./CA.sh -newca
Ø 确定CA 凭证及密钥是否产生:
² cd ~/openssl/ssl/misc/demoCA
² ls
² cacert.pem certs crl index.txt newcerts private serial
Ø 可见「cacert.pem 」即是CA 之凭证,而「private 」目录即是存放CA 私钥之处。
² 对 CA 证书请求进行签名:
u openssl ca -selfsign -in careq.pem -out cacert.pem
Ø 设定CA 凭证之存取权限,仅允许本人能存取,他人必须限制其存取权限:
² chmod -R 660 ~/openssl/ssl/misc/ demoCA
三、以 CA 产生次级凭证
Ø 在CA 凭证产生完之后,我们便能够产生使用者或公司所需要之凭证,此次级凭证产生后,使用者便可应用于Email 签章加密或https 等ssl 传输加密。
Ø 产生使用者之密钥档及CSR 档(Certificate Signing Request) :
² cd ~/openssl/ssl/misc/demoCA
² openssl req -nodes -new -keyout test_key.pem /-out test_req.pem -days 3650 -config ~/openssl/ssl/openssl.cnf
² 此处「-keyout 」即为产生Private key 之文档名,这里以「test_key.pem 」为例,您可自行设定。而「-out 」则产生CSR 档,我们以「test_req.pem 」为例。
Ø 产生使用者之凭证:
² openssl ca -config ~/openssl/ssl/openssl.cnf /-policy policy_anything –out test_cert.pem -infiles test_req.pem
Ø 检查凭证是否产生:
² cd ~/openssl/ssl/misc/demoCA
² ls
² 当前目录内容:cacert.pem
crl index.txt.attr test_cert.pem test_req.pem
private serial.old certs index.txt
index.txt.old test_key.pem newcerts serial
² 以上可见,test_cert.pem 、test_req.pem 及test_key.pem 分别为刚刚所产生出来的凭证、CSR 及Private Key 。
四、 Openssl 应用
Ø 以cacert 验证产生出来的使用者cert :
² openssl verify -CApath . /-CAfile cacert.pem test_cert.pem
Ø 检查产生的序号:
² openssl x509 -noout -serial -in test_cert.pem
Ø 检查发行者资讯:
² openssl x509 -noout -issuer -in test_cert.pem
Ø 检查凭证起始及终止日期时间:
² openssl x509 -noout -in test_cert.pem -dates
Ø 检查个人凭证资讯subject :
² openssl x509 -noout -in test_cert.pem -subject
Ø 检查MD5 fingerprint 或SHA-1 fingerprint :
² openssl x509 -noout -in islab_cert.pem -fingerprint -md5/-sha1
Ø 由PEM 转至PKCS12 。Microsoft Outlook Express 使用PKCS12 格式,因此欲使用Microsoft Outlook Express 寄出签章信件,只要将产生出来的“*.p12 ”文档安装在Windows 即可使用:
² openssl pkcs12 -export -in test_cert.pem -out test_cert.p12 -name "My Certificate" -inkey test_key.pem
Ø 由PKCS12 转至PEM:
² openssl pkcs12 -in test_cert.p12 -out test_key2.pem
Ø 再由Private Key 产生凭证:
² openssl x509 -in test_key2.pem -text /-out test_cert2.pem
Ø 文档加密: 「test_cert.pem 」为个人凭证,能够公开给大家,因此某人欲加密传送一文档给我,便能够依下列方式加密。编辑一个纯文字档,在此我们预设档名为「document.txt 」,而经加密码之档名为「document.enc 」:
² echo "This is a text file." > document.txt
² cat document.txt
² openssl smime -encrypt -in document.txt /-out document.enc islab_cert.pem
² cat document.enc
Ø 文档解密: 倘若我们收到了某人传送的「document.enc 」,我们便能使用Private Key 来进行解密:
² openssl smime -decrypt -in document.enc /-recip test_cert.pem –inkey test_key.pem
Ø 文档签章: 为文档签章可证实文档的来源为本人无误,并且能够验证文档是否被篡改。我们依前例,为一纯文字档「document.txt 」签章,签章后文档名为「document.sig 」:
² openssl smime -sign -inkey test_key.pem /-signer test_cert.pem -in document.txt -out document.sig
Ø 文档签章验证: 当某人收到这份文档时,可利用我们的凭证(test_cert.pem ) 连同CA 凭证(cacert.pem ) 来验证文档:
² openssl smime -verify -in document.sig /-signer islab_cert.pem -out document.txt -CAfile cacert.pem
² 因此我们能够知道,验证方必须事先取得 CA 凭证( cacert.pem ) 方可验证文档。
Ø 文档加密并签章:我们已知怎样加解密连同签章验证的方法了,因此要将文档加密并签章实非难事。我们必须先将文档进行签章再加密,而收方则以相反步骤进行解密再验证即可。
更多推荐
所有评论(0)