apache+ssl+ca

第一步:搭建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 谷歌浏览器 环境中操作。

 

  

posted @ 2017-02-21 11:52  6点32分  阅读(398)  评论(1编辑  收藏  举报