实验环境:

服务器:CentOS 6.5

客户端: Windows XP


一:建立机构证书

1:编辑openssl文件

# vim /etc/pki/tls/openssl.cnf 

dir=../../CA

改为

dir=/etc/pki/CA

ountryName             = match
stateOrProvinceName     = match
organizationName        = match

改为

ountryName             = optional
stateOrProvinceName     = optional
organizationName        = optional


作用是不用匹配国家、省份、城市照样能使用证书服务器,否则申请证书必须跟CA证书在同一个国家、身份、城市,才能申请证书。


2.创建配置文件所需的目录和文件。


#cd /etc/pki/CA

#mkdir certs crl newcerts

#touch index.txt

#echo "01" < serial


3.CA服务器机构自签证书


生成私钥

# openssl genrsa 1024 > private/cakey.pem

生成证书

# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650


二.签发服务器、客户端证书


服务器和客户端证书统一放到 /CA


服务器证书:


# mkdir /CA

# cd /CA

# openssl genrsa 1024 > server.key                    #证书私钥文件

# openssl req -new -key server.key -out server.csr    #证书申请文件

# openssl ca -in server.csr -out server.crt           #生成证书文件


客户端证书:

# openssl genrsa 1024 > client.key                    #证书私钥文件

# openssl req -new -key client.key -out client.csr    #证书申请文件

# openssl ca -in client.csr -out client.crt           #生成证书文件


将客户端证书转换成客户端可识别的证书格式,转换后会提示键入私钥密码,客户端导入此证书时会用到

# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx



三:apache的ssl设置


安装apache的ssl模版文件

# yum install mod_ssl


编辑ssl的模版文件

# vim /etc/httpd/conf.d/ssl.conf 


https页面的主目录直接使用默认目录

DocumentRoot "/var/www/html"
ServerName www.51cto.com:443


SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

改成

SSLCertificateFile /CA/server.crt
SSLCertificateKeyFile /CA/server.key
SSLCACertificateFile /etc/pki/CA/cacert.pem

并开启

SSLVerifyClient require
SSLVerifyDepth  10


在目录下创建一个主页文件

# echo "this is ssl page" > /var/www/html/index.html


#service httpd restart


四:将客户端证书拷到客户端中并导入证书


CetnOS Apache的SSL双向认证_第1张图片


CetnOS Apache的SSL双向认证_第2张图片


这里填写导出客户端证书时设置的私钥密码


CetnOS Apache的SSL双向认证_第3张图片


CetnOS Apache的SSL双向认证_第4张图片


CetnOS Apache的SSL双向认证_第5张图片


CetnOS Apache的SSL双向认证_第6张图片


测试

先改一下hosts的解析文件


CetnOS Apache的SSL双向认证_第7张图片


CetnOS Apache的SSL双向认证_第8张图片


CetnOS Apache的SSL双向认证_第9张图片


CetnOS Apache的SSL双向认证_第10张图片


CetnOS Apache的SSL双向认证_第11张图片