Apache2上配置https,实现客户端CA证书认证
第一步实现传统的http,
第二步要实现https, 这里重复一些:
主要是这个文件
$PATH/apache2/conf/extra/ssl.conf:
SSLCertficateFile $PATH/apache2/conf/server.crt
SSLCertificateKeyFile $PATH/apache2/conf/server.key
这两行要打开.
怎么产生server.crt 和 server.key, 用法如下:
cd $PATH/apache2/conf/
openssl genrsa -des3 -out server.key 1024 ##记好server.key的密码(重启apache需要此密码)
openssl req -new -key server.key -out server.csr ##输入server.key的密码
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt ##输入server.key的密码
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: shanghai 省份名称
Locality Name: shanghai 城市名称
Organization Name: xxxooo 公司名称
Organizational Unit Name: SA 管理主机部门名称
Common Name: 服务器IP或是主机名
Email Address: xxxooo@mail.com SA的Email地址
(这个是自己给自己认证,你也可以先产生这个server.csr, 然后去verisign 用它30天免费的server.crt
到此,你的HTTPS应该可以起来.如果看见一些错误.error 98 mod_socket之类的. 多数是httpd.conf 文件中, 要有Include conf.d/httpd-ssl.conf
而同时使用port 443, 与 $PATH/apache2/conf/extra/ssl.conf文件中port 443重复使用了. 基本上httpd.conf不用改,而只改ssl.conf就可以了. (折腾了我好一会这里,:-( )
现在你的https可以起来, 但人人可以去,我们最终的目的是只有你签发的certificate的用户才可以,所以接着走…
第三步https的CA认证:
1、ssl.conf 文件中要去掉如下行前的#:
SSLCACertificateFile $PATH/apache2/conf/myca.crt
SSLVerifyClient require
SSLVerifyDepth 1
2、在 cd $PATH/apache2/conf/
openssl genrsa -des3 -out myca.key 1024 ##记好myca.key的密码
openssl req -new -x509 -days 3650 -key myca.key -out myca.crt ##输入myca.key的密码
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: shanghai 省份名称
Locality Name: shanghai 城市名称
Organization Name: xxxooo 公司名称
Organizational Unit Name: SA 使用部门名称
Common Name: sakia 客户端使用者
Email Address: xxxooo@mail.com 客户端使用者Email地址
现在我们有了这个myca.crt, 这个CERT相当与一个图章,用这个图章盖过的请求才可以访问你的HTTPS, 这才是目的.
3、生成一个csr文件和privkey.pem文件
openssl req -new > public.csr ##输入public.csr的密码
生成privkey.pem和public.csr两个文件
用户产生了一个请求CSR文件. 用图章盖过印的CSR请求, 产生一个cert才有效,这就是这个目的.
4、$PATH/apache2/conf/目录下应该有你刚才产生的myca.key & myca.crt
openssl x509 -req -in public.csr -out public.crt -signkey myca.key -CA myca.crt -CAkey myca.key -CAcreateserial -days 3650
##输入myca.key的密码,再次输入maca.key的密码
在$PATH/apache2/conf/下面,应该产生了public.crt这个文件. 也就是一个盖过章的certificate.
5、这个certificate是BASE64形式的,要转成PKCS12才能装到IE,/NETSCAPE上.所以你要:
cd $PATH/apache2/conf/
openssl pkcs12 -export -in public.crt -inkey myca.key -out public.pfx ##先输入myca.key的密码验证,然后定义客户端证书的密码
6、到此为止,基本上大功告成. 把这个public.pfx装到你的IE下,证书下.用default 安装,不用变革路经.
在客户端安装证书的方法:
安装你在第一步生成的ca.crt文件,打开web浏览器,“工具”—“Internet选项”—“内容”—“证书”选择导入证书,然后按照提示一步一步完成安装。或者你双击证书文件按照提示一步一步安装证书。
7、重起HTTPS, 在用有certificate的IE去访问. ——– 如果一切顺利,是不是心情很爽?