这段日子需要熟悉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.pemtest_req.pemtest_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 ) 方可验证文档。

Ø   文档加密并签章:我们已知怎样加解密连同签章验证的方法了,因此要将文档加密并签章实非难事。我们必须先将文档进行签章再加密,而收方则以相反步骤进行解密再验证即可。

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐