天天看点

Linux下导入SSL证书(配置用于Apache)

三、部署证书

如果使用双向认证,就会有三个私钥和三个证书。分别是 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不勾选

*其他浏览器操作类似,有问题可以百度搜索。

     本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1870099,如需转载请自行联系原作者