第一步:搭建apache服务器,这在上篇博客中已经完成 http://www.cnblogs.com/sangmu/p/6422238.html
第二步:安装ssl
yum install mod_ssl -y iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT service iptables save
1 vim /etc/httpd/conf.d/ssl.conf 2 3 Listen 443 //监听的端口号 4 <VirtualHost _default_:443> // 配置虚拟主机,如果仅仅只是对一个网站加密,则将default改成域名 5 DocumentRoot "/var/www/html" //网页文件所在目录 6 ServerName www.example.com:443 // 加密网站域名 7 SSLEngine on // 开启ssl 8 SSLCertificateFile /etc/httpd/conf/ssl.crt/test.crt //www服务器证书位置 9 SSLCertificateKeyFile /etc/httpd/conf/ssl.key/test.key //www服务器秘钥位置 10 SSLCACertificateFile /etc/pki/CA/ca.crt //CA服务器证书位置 11 SSLVerifyClient require //是否开启双向认证,开启后 要求浏览器客户端,必须有CA颁发的证书 12 SSLVerifyDepth 10 //双向验证层数
至此,ssl安装完成。
第三步:安装CA
①安装ca
yum install openssl -y vim /etc/pki/tls/openssl.cnf
1 dir = /etc/pki/CA //目录 2 certs = $dir/certs // 颁发证书位置 3 crl_dir = $dir/crl //吊销证书位置 4 database = $dir/index.txt //索引表 5 new_certs_dir = $dir/newcerts //新证书位置 6 certificate = $dir/ca.crt //自己证书位置 7 serial = $dir/serial //证书序列号 8 crlnumber = $dir/crlnumber //证书吊销列表 9 private_key = $dir/private/ca.key //秘钥位置 10 countryName = optional 11 stateOrProvinceName = optional 12 organizationName = optional 13 organizationalUnitName = optional
②创建目录和文件
cd /etc/pki/CA mkdir certs newcerts crl touch index.txt serial echo 01 > serial //导入初始序列号
③生成ca秘钥
umask 077;openssl genrsa -out private/ca.key 2048
注:
umask 077 //设置生成文件的权限
genrsa //生成私钥
-out //私钥存放路径
2048 //2048字节计算
④给ca服务器生成证书申请请求
1 openssl req -new -key ca.key -out ca.csr
⑤给ca用服务器的私钥给证书服务器颁发ca证书
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
注:也可直接给ca颁发自己的证书ca.crt
1 openssl req -x509 -new -key private/ca.key -out ca.crt -days 365 2 Country Name (2 letter code) [GB]:CN //国家 3 State or Province Name (full name) [Berkshire]:JS //省份 4 Locality Name (eg, city) [Newbury]:NT //地区 5 Organization Name (eg, company) [My Company Ltd]:NTZD //组织名 6 Organizational Unit Name (eg, section) []:DZX //部门 7 Common Name (eg, your name or your server's hostname) []:test4.sangmu.com //域名 8 Email Address []:root //邮箱
第四步:apache 申请证书和秘钥
①创建目录和文件
cd /etc/httpd/conf mkdir ssl.key ssl.crt
②生成秘钥
umask 007;openssl genrsa -out ssl.key/test.key 2048
③填写证书申请请求
umask 007;openssl genrsa -out ssl.key/test.key 2048
第五步:颁发申请
1 openssl ca -in web.csr -cert ca.crt -keyfile -out web.crt
重启服务,这个时候,在客户端可以进行加密访问了。
补充:
1.如果linux ca服务器给windows web 服务器颁发证书,则需要将windows网页证书申请文件导入到ca服务器中,然后颁发
1 openssl pkcs12 -export -clcerts -in web.crt -inkey web.key -out web.p12
2.如果ca服务器搭建在windows上,web服务器搭建在linux 上,则需要linux 通过网页申请证书,然后将证书文件进行格式转化
1 openssl x509 -in cert.cer -inform der -outform pem -out web.crt
如果开启双向认证,则需要给浏览器客服端颁发证书
①生成client秘钥client.key
1 opensll genrsa -des3 -out client.key
②填写证书生成请求client.csr
openssl req -new -key client.key -out client.csr
③颁发client证书 client.crt
1 openssl ca -in client.csr -cert ca.crt -keyfile -out client.crt
④client证书格式转换
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
⑤在client端安装ca根证书ca.crt和clien证书client.p12
至此就完成了双向验证
注:本次实验是在centos5.5+Windows 7 谷歌浏览器 环境中操作。