Linux OpenSSL及证书服务

问题
本案例要求熟悉OpenSSL工具的基本使用,完成以下任务操作:
1)使用OpenSSL加密/解密文件
2)搭建企业自有的CA服务器,为颁发数字证书提供基础环境

方案

使用两台RHEL6虚拟机,其中svr5作为CA数字证书服务器,而pc205作为测试用客户机,如图-4所示。
在这里插入图片描述
图-4
步骤
实现此案例需要按照如下步骤进行。
步骤一:使用OpenSSL加密/解密文件
1)加密文件
创建一个明文的文本文件f1.txt,使用openssl进行加密,选用des3加密算法,输出的加密文件为f1.txt.enc 。

[root@svr5 ~]# rpm -qi openssl > f1.txt 				//建立明文的测试文件
[root@svr5 ~]# head -2 f1.txt
Name        : openssl                      Relocations: (not relocatable)
Version     : 1.0.0                             Vendor: Red Hat, Inc.
[root@svr5 ~]# openssl enc -des3 -e -in f1.txt -out f1.txt.enc
enter des-ede3-cbc encryption password:  				//设置一个密码
Verifying - enter des-ede3-cbc encryption password:  	//再次输入设置的密码
[root@svr5 ~]# file f1.txt*
f1.txt:     UTF-8 Unicode English text
f1.txt.enc: data  									//加密后变成非ASCII格式

2)解密文件
查看未解密的f1.txt.enc文件时显示乱码,必须解密后才能查看。

[root@svr5 ~]# head -2 f1.txt.enc
Salted__▒▒▒▒C̏▒x▒6Q▒
.O▒l▒g▒)▒▒▒{▒▒G▒▒t▒▒!▒▒▒Cc0▒▒▒c쬂▒V▒Dp▒▒9▒▒▒[▒▒▒X▒f▒ڍ▒j@▒▒▒▒▒▒▒=@▒.ɮP▒1e▒▒▒"M`▒W▒=▒▒▒-a,▒▒j7▒M▒▒b▒+▒▒   麋0▒▒▒k▒▒z▒Zʢ

[root@svr5 ~]# openssl enc -des3 -d -in f1.txt.enc -out f1-new.txt
enter des-ede3-cbc decryption password:  				//输入解密口令
[root@svr5 ~]# head -2 f1-new.txt  					//查看解密后的文本
Name        : openssl                      Relocations: (not relocatable)
Version     : 1.0.0                             Vendor: Red Hat, Inc.

步骤二:搭建企业自有的CA服务器,为颁发数字证书提供基础
1)配置CA签署环境
修改OpenSSL的主配置文件位于/etc/pki/tls/openssl.cnf,为证书创建过程提供一些默认的设置:

[root@svr5 ~]# vim /etc/pki/tls/openssl.cnf
.. ..
[ CA_default ]
dir             = /etc/pki/CA  				//CA相关文件的默认目录
certs           = $dir/certs  				//为用户颁发证书的存放位置
crl_dir         = $dir/crl  				//证书废止列表(CRL)文件的存放位置
database        = $dir/index.txt  			//证书数据的索引文件,需手动建立
certificate     = $dir/my-ca.crt  			//CA服务器根证书文件
serial          = $dir/serial  				//序号记录文件,需手动建立
.. ..
private_key     = $dir/private/my-ca.key  	//CA服务器私钥文件
[ req_distinguished_name ]  			//证书请求的识别信息
countryName                     = Country Name (2 letter code)
countryName_default             = CN  						//国家名缩写
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Beijing  					//所在省份
localityName                    = Locality Name (eg, city)
localityName_default    = Beijing  							//所在城市
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Tarena Technology Ltd  	//所在单位/组织
默认CA配置目录位于/etc/pki/CA/,需要建立初始化序列文件、索引文件:
[root@svr5 ~]# cd /etc/pki/CA
[root@svr5 CA]# touch index.txt  					//建立数据索引文件
[root@svr5 CA]# echo 01 > serial  					//建立序号文件

2)为CA服务器创建私钥
此私钥在后续签发证书时都会用到,建议设置一个私钥口令进行保护。

[root@svr5 ~]# cd /etc/pki/CA/private
[root@svr5 private]# openssl genrsa -des3 2048 > my-ca.key
Generating RSA private key, 2048 bit long modulus
...............................+++
............+++
e is 65537 (0x10001)
Enter pass phrase:  								//设置一个私钥口令
Verifying - Enter pass phrase:  					//再次输入设置的私钥口令
[root@svr5 private]# chmod  600  my-ca.key
[root@svr5 private]# ls  -l  my-ca.key
-rw-------. 1 root root 1751 8月   6 14:12 my-ca.key

3)为CA服务器创建根证书
此根证书将提供给所有客户企业及个人,用来验证证书持有者的合法身份。证书请求识别信息会根据第1)步设置的自动读取,但通用名称、邮箱地址需要手动指定。

[root@svr5 private]# openssl req \
> -new -x509 -key my-ca.key -days 365 > ../my-ca.crt
Enter pass phrase for my-ca.key:  					//验证私钥口令
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Beijing]:
Locality Name (eg, city) [Beijing]:
Organization Name (eg, company) [Tarena Technology Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:Tarena CA Server
Email Address []:zengye@tarena.com

4)发布根证书文件
本例中通过自带的httpd服务提供Web方式的下载。

[root@svr5 private]# mkdir /var/www/html/certs/
[root@svr5 private]# cp  ../my-ca.crt  /var/www/html/certs/TARENA-CA.CRT
[root@svr5 private]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using svr5.tarena.com for ServerName
                                                           [确定]
确认在客户机能够下载到根证书。
[root@pc205 ~]# wget http://192.168.4.5/certs/TARENA-CA.CRT
.. ..
2013-08-17 23:36:51 (49.5 MB/s) - 已保存 “TARENA-CA.CRT” [1436/1436])

完成这些步骤以后,就已经具有了签发证书的环境。当收到企业或个人提交的证书签发请求(CSR)文件以后,就可以执行验证和签发了(后续讲解内容)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值