原理:client通过https去访问wed server nginx的时候,服务器为了证明自己的身份,并且也为了实现加密,它需要向客户端出示证书,(持有者标识,服务器的公钥,有效期,颁发单位,CA的签名),此时客户端需要于证书进行比对(有效期,及颁发单位是否我信任的颁发单位,持有者标识是否与访问的持有者标识一样,打开签名然后对里面的一些重新检测,如果比对一样,则表示里面的信息没有被篡改),浏览器随机产生k值,利用公钥加密k值来传递给服务器,服务器在用私钥来打开。。
环境:mod_ssl-2.2.3-31.e15.i386.rpm httpd-2.2.3-31.el5.i386.rpm nginx-1.0.11.tar.gz pcre-devel-6.6-2.el5_1.7.i386.rpm libevent-2.0.16-stable.tar.gz
NGINX的源码安装
1.groupadd –r nginx 创建一个系统组
2.useradd –r –g nginx –s /bin/nolohon –M(系统账号默认值) nginx 添加系统用户,任何的服务都必要有一些运营者的身份
3.tar –zxvf libevent-2.0.16-stable.tar.gz –C /usr/local/src/
4.cd /usr/local/src/libevent-2.0.16-stable/
5../configure--prefix=/usr/local/libevent
6.make &&make install
7.cd /usr/local/libevent/
图1
8.vim /etc/ld.so.conf.d/libevent.conf 写入 /usr/local/libevent/lib
9.ldconfig刷新缓存
10.ldconfig -pv|grep libevent 测试系统是否可以找到这些库文件
11.ln -s /usr/local/libevent/include/ /usr/include/libevent 头文件做一个符号链接
12.tar –zxvf nginx-1.0.11.tar.gz –C /usr/local/src/
rpm –ivh pcre-devel-6.6-2.el5_1.7.i386.rpm
13.cd /usr/local/src/ nginx-1.0.11
14. ./configure --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre
15.选项解释:
-conf-path 配置文件存放的位置
--error-log-path 错误日志存放的位置名称
--http-log-path 成功日志存放的位置名称
--pid-path pid的位置
--lock-path 索文件
--with-http_ssl_module 增加ssl模块
--with-http_flv_modile 支持flv模块
--with-http_stub_status_module 状态输出
--with-http_gzip_status_module 压缩或解压
--http-client-body-temp-path 临时文件
--http-proxy-temp-path 反向代理加速时临时文件存放的位置
--http-fastcgi-temp-path 交互时临时文件
--with-pcre 支持正则表达式的库
16.make
17.make install
18. mkdir –pv /var/tmp/nginx/client
19. ./nginx 启动nginx
20 ps aux |grep nginx查看ngix 的进程
21.测试nginx是否可以被访问到
图2
22../nginx -s stop 停止nginx的线程
23. PATH=$PATH:/usr/local/nginx/sbin/ 更改环境变量
测试httpd与nginx的压力测试
1.首先安装httpd
2.rpm –ivh httpd-2.2.3-31.el5.i386.rpm
3.启动 service httpd start
4.ab –c 1000 –n 10000http://192.168.2.10/index.html
图3
图5
5.ps aux |grep httpd
6.图4
7.service httpd stop
8.nginx
9.ab –c 1000 –n 50000http://192.168.2.10/index.html
10.图6
地址虚拟主机
案例:对nginx进行网页测试,设置IP地址,使得我访问192.168.2.101能够显示出TEC技术部,当访问192.168.2.10能够显示出来主站点
1.ifconfig eth0:192.168.2.101
2.mkdir /usr/local/nginx/tec
4. echo "tec" >index.html
5.更改配置文件
6. cd /etc/nginx
7.vim nginx.conf
图7
图8
10.复制35行server到80行重新编辑
11.图9
12. /usr/local/nginx/sbin/nginx –t 对nginx进行语法测试
13. /usr/local/nginx/sbin/nginx -s stop 把nginx停下来 不加参数表示启动nginx
14.测试
图10
图11
nginx实现CA的颁发
1.cd /etc/pki
2.vim tls/openssl.cnf 45行 dir = /etc/pki/CA证书保存的位置 88行到90行更改成optionl可以给其他的地区颁发证书(:88,90 s/match/optional 快捷方式替换)
3.cd CA
6.mkdir crl certs newcerts 当前的url 默认的证书存放位置 新的证书存放位置
7.touch index.txt serial 数据库的索引文件及编号文件
8.echo "01" >serial 写入第一个编号
9.openssl genrsa 1024 >private/cakey.pem 产出私钥
10.chmod 600 private/*
11.openssl req -new -key private/cakey.pem-x509 -out cacert.pem 给自己服务器颁发证书
图1
wed server nginx
1.mkdir -pv /usr/local/nginx/certs(私钥 请求 证书存放在一个目录)
2.cd/usr/local/nginx/certs
3.openssl genrsa 1024 >nginx.key 产生私钥文件
4.openssl req -new -key nginx.key-out nginx.req 产生请求文件
5.图2
6.chmod 600 nginx.key 私钥是严格被保管的,改变私钥的权限
7.openssl ca –in nginx.req –out nginx.cert
8.图3
9.cd /etc/nginx/
10.vim nginx.conf
11.证书与服务器绑定(150行开始复制 19yy 按p 任何位置)
图5
测试
解决方法:首先client需要CA安装证书
12.需要有这个包mod_ssl-2.2.3-31.e15.i386.rpm(光盘或者下载都可以)
13.rpm2cpio mod_ssl-2.2.3-31.e15.i386.rpm |cpio –id rpm2cpio将指定的一个 .rpm 文件转换为一个 cpio 文档,输出到标准输出
14.cd /usr/local/nginx/certs
15.cp /etc/pki/CA/cacert.pem ./
16.cat nginx.cert.bak cacert.pem>nginx.cert ca的证书与机构的证书来进行合并
以上就是NGINX实现CA颁发。