用ssl加密apache服务器来建立连接加密网站
jopen
11年前
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客户机登录测试