上善若水,不浮不沉!
分类: LINUX
2014-05-21 08:38:54
配置apache验证客户端证书
1、建立CA认证
#修改openssl.cnf文件
vi /etc/pki/tls/openssl.cnf
#修改[ CA_default ]下的dir = 设置为
dir = /etc/pki/CA
#转到CA目录
cd /etc/pki/CA
#生成私钥文件
mkdir private
openssl genrsa -out private/cakey.pem 1024
#设置400权限
chmod 400 private/cakey.pem
#基于这个私钥自行签署证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
cp prvate/cacert.pem ca.crt
注意:证书只有放在/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中的配置保持一致
#将根证书转换成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in cacert.pem -inkey private/cakey.pem -out private/ca.p12
#生成后导入浏览器中受信任的证书颁发机构后重启浏览器,否则颁发的证书会提示证书不受信任。
firefox里面在信任证书导入证书文件不导P12格式也可以,
完成以上设置后,现在就可以颁发证书了。
2、客户端申请证书
#建立存放私钥的目录mkdir /etc/ssl
cd /etc/ssl
#生成私钥
openssl genrsa -out c.key 1024
chmod 600 host.key
#生成申请
openssl req -new -key c.key -out c.csr
#把host.csr发送到CA主机,直接拷贝过去也可以
scp c.csr ip:/tmp
#在CA主机上签署证书
#由于传送到了/tmp目录,所以先转到/tmp
cd /tmp
openssl ca -in c.csr -out c.crt
#一路Yes即可
#客户端获取颁发的证书或直接拷贝过去
scp ip:/etc/pki/CA/newcerts/host.crt
#将客户端证书和私钥打包成P12格式,导入IE或者firefox您的证书
openssl pkcs12 -export -clcerts -in c.crt -inkey c.key -out c.p12
3、服务器申请证书
#建立存放私钥的目录
mkdir /etc/ssl
cd /etc/ssl
#生成私钥
openssl genrsa -out s.key 1024
chmod 600 host.key
#生成申请
openssl req -new -key s.key -out s.csr
#把host.csr发送到CA主机,直接拷贝过去也可以
scp s.csr ip:/tmp
#在CA主机上签署证书
#由于传送到了/tmp目录,所以先转到/tmp
cd /tmp
openssl ca -in s.csr -out s.crt
#一路Yes即可
#客户端获取颁发的证书或直接拷贝过去
scp ip:/etc/ssl/s.crt
[客户端证书服务器证书没有本质差别,申请时候不同证书common 要不同]
配置apache
[vi /etc/httpd/conf.d/ssl.conf]
指定服务器证书位置(将证书cp过去或修改指定路径)
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
指定服务器证书key位置
SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key证书目录
CA根证书位置
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca.crt
开启客户端SSL请求
SSLVerifyClient require
SSLVerifyDepth 1