SSL

apache中专门有个mod_ssl模块来提供ssl支持。

mod_list默认是没有安装的,需手动安装。

任何服务器想要使用ssl,则服务器端得有证书,客户端有没有证书无所谓,只要服务器端不需要验证客户端。但是客户端验证服务器端的正数,客户端得有CA的证书。

 

为客户端生成自签证书:

创建CA

/etc/pki/CA/private/创建cakey.pem文件即可

#cd /etc/pki/CA

#(umask 077; openssl genrsa 2048 > private/cakey.pem)

然后生成自签证书,且在生成之前要编辑它的配置文件 /etc/pki/tls/openssl.cnf  ,主要修改[ CA_default ]下的            dir =/etc/pki/CA  

 defaul_days =3650

[ req_distinguished_name ]下的

countryName_default = CN

stateOrProvinceName_default = Henan

localityName_default = LUOYANG

O.organizationName_defual = xxx

organizationlUnitName_default = Tech  即可保存退出。

生成证书:

#openssl req -new -x509 -key /private/cakey.pem -out cacert.pem

Common Name:XXX

Email Address:XX@XXX

即可生成名为cacert.pem的证书了,而这个证书是让客户端用的,所以要把它放的客户端中,这里的客户端选用win7,放到win7后需修改文件的后缀为.crt ,再通过浏览器中的选项-->内容-->证书-->添加,cacert.crt导入到win7中 。

 

服务器端生成密钥和证书颁发:

然后需在CA/目录下创建certs crl newcerts 三个目录,serial index.txt两个文件,在serial里写些内容做测试用。再在/etc/httpd/下创建ssl目录,在该目录下需要生成密钥文件,证书颁发请求

#(umask 077 ; openssl genssl 2048 > httpd.key)

再根据这个密钥文件生成证书颁发请求

#openssl req -new -key httpd.key -out httpd.csr

Common Name:XXX  (重要)

Email Address :xxx.@xxx

接下来就可以把httpd.csr发给ca

#openssl ca -in httpd.csr -out httpd.crt -days 3650

到此httpd.crt证书就签好了。

编辑/etc/httpd/conf.d/ssl.conf文件,找到<VirtualHost _default_:443>

修改DocumentRoot /var/www/html/web1ServerName www.a.org:443 ;再找到SSLCertificateFile /etc/httpd/ssl/httpd.crt 写上证书存放的位置,SSLCertificateKeyFile /etc/httpd/ssl/httpd.key 写上密钥文件的存放位置,如果需要还要启动SSLCACertificateFile指令。


你可能感兴趣的:(ssl)