实验环境:
服务器: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
四:将客户端证书拷到客户端中并导入证书
这里填写导出客户端证书时设置的私钥密码
测试
先改一下hosts的解析文件