三、部署证书
如果使用双向认证,就会有三个私钥和三个证书。分别是 ca.key, ca.crt, server.key, server.crt, client.key, client.crt ,以及给浏览器的 client.pfx 。
如果使用有 CA 证书的单向认证,证书和私钥就是 ca.key, ca.crt, server.key, server.crt 。
如果使用无 CA 证书的单向认证,证书和私钥就是 server.key, server.crt 。
1、修改httpd.conf文件
**RPM安装的情况下,不需要修改httpd.conf文件,因为在httpd.conf文件中默认添加了 include conf.d/*.conf。而在rpm安装时,conf.d文件夹中已含有ssl.conf文件。所以只要修改ssl.conf文件就可以了。**
**RPM安装的Apahce时,可能一开始没有mod-ssl,需要安装。方法为:yum install mod_ssl 或者用rpm包安装,需要mod_ssl arp_util distcache httpd postgresql-libs等伊来关系。**
需要修改时可在httpd.conf文件中加上include conf.d/ssl.conf(用于ssl模块使用的conf文件的路径即可)。
2、修改ssl.conf文件
[root@localhost conf.d]#cp -p ssl.conf ssl.conf.bk
[root@localhost conf.d]#vi ssl.conf
---------------------------------------
Listen 443 //可以改成其他端口
SSLPassPhraseDialog builtin //每次重启Apache时需要输入密码
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.crt/server.key
SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca.crt //双向时使用
SSLVerifyClient require //双向时使用,强制客户必须持有SSL证书请求
SSLVerifyDepth 10 //双向时使用
</VirtualHost>
---------------------------------------
可以按照如下方式重新导入KEY文件,则可以不用每次重启Apache都需要输入KEY文件密码
[root@localhost ssl.crt]#openssl rsa -in server.key -out server2.key
[root@localhost ssl.crt]#mv server.key server.key.originalkey
[root@localhost ssl.crt]#mv server2.key server.key
3、重启Apache
[root@localhost ssl.crt]#service httpd restart
如果端口号为非默认的443(假如为446),则可能会会出现如下错误:
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:446
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:446
no listening sockets available, shutting down
Unable to open logs
[FAILED]
则可以使用semanagement工具来添加Apache的侦听端口
[root@localhost ssl.crt]#semanage port -l|grep http
[root@localhost ssl.crt]#semanage port -a -t http_port_t -p tcp 446
再次重启Apache应该就可以使用了。
4、开启防火墙端口
[root@localhost conf]#cd /etc/sysconfig/
[root@localhost conf]#vi iptables
-------------------------------------
添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 446 -j ACCEPT
-------------------------------------
[root@localhost sysconfig]# /etc/init.d/iptables restart
配置完之后,如果客户端没有安装证书,则不能用446端口访问服务器了。
5、客户端安装证书
IE为例:
【工具】--》【internet选项】--》【内容】--》【证书】--》【受信任的根证书颁发机构】--》【导入】,导入ca.crt。
(双向认证时)【工具】--》【internet选项】--》【内容】--》【证书】--》【个人】--》【导入】,导入client.p12,需要输入该文件的密码
可使用https访问网站
*如果使用IE访问时有问题而用其他浏览器比如火狐,谷歌时没有问题,请对IE做以下设置:
【工具】--》【internet选项】--》【高级】--》安全
ssl和tls使用最低版本。比如SSL 勾选【使用SSL 2.0】,其他的ssl版本不勾选
tls勾选【使用TLS 1.0】,其他版本的tsl不勾选
*其他浏览器操作类似,有问题可以百度搜索。