证书颁发的过程:
一、作为客户端,先生成公钥私钥对
二、结合公钥生成证书申请请求
三、将生成的请求发给CA
四、服务端,CA开始签署收到的请求,生成证书
五、客户端收到证书

第一种情况:在一台主机主,既当CA,又当证书申请者

生成密钥
# openssl genrsa 1024 > /root/httpd.key
注:1024为密钥长度,将密钥生成到/root/httpd.key

公钥是从私钥中提取出来的
生成公钥
# openssl rsa -in /root/httpd.key -pubout -out /root/httpd.pub

生成申请:
# openssl req -new -key /root/httpd.key -out /root/httpd.csr
开始输入申请信息
注:请求文件一般以.csr结尾


CA:

自签证书
# openssl req -new -key /root/httpd.key -out /root/httpd.crt -days 3655
注:发了一上使用期限为3655天的证书 /root/httpd.crt
发自签证书不需要请求


查看证书申请的内容:
# openssl -req -noout -in /root/httpd.csr -text
注:用其它方法查看,得到的是乱码

 

########################################################

第二种情况:CA与证书申请者分开

主机1(CA):192.168.0.1
主机2(证书申请者):192.168.0.2

把主机1做成CA

首先给自己发一个证,在/etc/pki/CA/private下

# cd /etc/pki/tls
# vim openssl.cnf
修改[ CA_default ]下的
dir = /etc/pki/CA
修改 [ req_distinguished_name ] 下的
countryName_default = CN
stateOrProvinceName_default = 所在省名Henan
locallityName_default = 所在城市名
其余的一些像组织名,邮箱地址的,如果想修改一下默认也可以,这样可以在生成证书时,直接敲回车按默认就行了

# cd /etc/pki/CA

生成私钥文件
# openssl genrsa 1024 > private/cakey.pem
# chmod 400 private/cakey.pem
基于此密钥给自己发一个证书
生成自签署证书不必要请求,可直接生成
# openssl req -new -x509 -key private/cakey.pem -out cacert.pme -days 3655
开始输入证书信息

注:证书只有放在/etc/pki/CA下才可以用

创建几个所需的目录
# mkdir certs newcerts crl
# touch index.txt serial
# echo 01 > serial

注:certs 存放证书的位置
crl 存放证书调销列表
index.txt 存放都发给谁证书了,发了第几个了
newcerts 存放生成的新证书
serial 内部管理序列号,默认从00或01开始
这此文件的名字可以自己取,但要与/etc/pki/tls/openssl.cnf中的配置保持一致

至此,CA便可以使用,一般只在企业内部使用,所以请求证书时填写的证书信息应与CA证书保持一致


在另一台客户端主机上,配有httpd服务或其它服务,需要申请证书

首先在服务配置文件所在目录下创建certs目录
# mkdir certs

生成私钥
# umask 077; openssl genrsa 1024 > httpd.key

注:umask 077 用于保证生成的私钥文件的权限为600,不允许其它用户读写

生成申请
# openssl req -new -key httpd.key -out httpd.csr
输入申请信息,需要与CA的证书信息保持一致

将请求httd.csr发给CA
这里可以用通过邮件或者U盘都可以,也可用scp
这里将请求发送至CA的/tmp目录中
# scp httpd.csr 192.168.0.1:/tmp

在CA上

# cd /tmp

开始签署请求
# openssl ca -in httpd.csr -out /etc/pki/CA/newcerts/httpd.crt
在接下来的询问中,同意请求即可


在客户端上

获取颁发的证书
# scp 192.168.0.1:/etc/pki/CA/newcerts/httpd.crt

完!

快速颁发证书的方法,用于测试
在CA上
# cd /etc/pki/tls/certs
# make httpd.pem
生成一个名为httpd.pem用于测试的证书

# make httpd.key
生成一个1024位的私钥

# make httpd.csr
生成一个请求

# make httpd.key
生成一个正二八经的证书
 

 
 
###如发现文中有错,请即时指正,不胜感激!