用ssl加密apache服务器来建立连接加密网站

jopen 10年前

1.http这个通信协议是明码传送数据,而https时加密传输的,加密的方法时通过ssl,这个ssl是以openssl软件来提供一个加密的函数库

2.要让apache支持https协议的话,必须要有mod_ssl这个软件,以建立连接加密网站

3.环境说明:

A:正规的网站应该向第三方CA颁发机构注册,用户浏览是向CA机构询问此网站证书的有效性

B:centos6.4上自建CA,来向客户端颁发证书,这个自建的CA仅供测试使用

C:apache服务器作为客户向刚才自建的CA机构注册证书

//首先确保你的apache服务器已经成功运行,再进行下面步骤

//创建CA来向客户端颁发证书

#创建证书的文件夹可以随便选择,以后在/etc/httpd/conf.d/ssl.conf文件中指定这个证书位置即可  1.首先建立一个CA的根私钥文件,使用RSA格式,1024位  shell> mkdir /etc/httpd/ssl_ca  shell> cd /etc/httpd/ssl_ca  shell> openssl genrsa -des3 -out ca.key 1024    2.利用建立的RSA私钥,为CA自己建立一个自签名的证书文件  shell> openssl req -new -x509 -days 7300 -key ca.key -out ca.crt    3.CA已经建立完毕,生成的ca.key 和ca.crt向客户端颁发证书

//apache服务器向CA申请证书

1.客户端生成客户证书的私钥文件  shell> openssl genrsa -des3 -out apache_client.key 1024    2.openssl 生成客户端证书的时候,不能直接生成证书,而是必须通过证书请求文件来生成,现在必须先建立客户端的证书请求文件  shell> openssl req -new -key client.key -out client.csr    3.有了证书请求文件(client.csr),就可以使用CA的根证书和根私钥(ca.crt,ca.key)来对请求文件进行签名,生成客户端证书client.pem  shell> openssl x509 -req -in client.csr -out client.pem -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650

//添加apache对openssl模块的支持

1.下载mod_ssl  shell> yum install mod_ssl.x86_64     2.验证apache主配置文件有下面这条  shell> vim /etc/httpd/conf/httpd.conf  Include conf.d/*.conf  #可以加载ssl的配置文件    3.编译ssl.conf  -------------------  LoadModule ssl_module modules/mod_ssl.so  Listen 443       #验证上面这两条的存在  SSLCertificateFile /etc/httpd/ssl_ca/client.pem  #路径改为刚才生成客户端证书文件的路径  SSLCertificateKeyFile /etc/httpd/ssl_ca/client.key  -------------------  4.重启apache服务  //在ubuntu客户机登录测试