SSL是什么,在另一篇文章《Apache站点安全》里的第三个模块https里已经进行了介绍,这里就不再重复,由于是实验环境,从简便方面考虑,依然把CA和web放置在同一台机器上,让其自行为自己颁发数字证书。
实验环境:web操作系统为RedhatEnterprise Linux AS v5.4 www 服务由nginx1.0.11提供 Client操作系统为Windows XP 需求描述:web服务器同时担任CA的角色,为自身的网站颁发数字证书 实现客户端对web服务访问使用https方式
一、安装nginx
tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/libevent tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/nginx
--conf-path= - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf --error-log-path= - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为/logs/error.log --http-log-path= - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为/logs/access.log --pid-path= - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为/logs/nginx.pid。 --lock-path= - nginx.lock文件的路径。 --user= - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。 --group= - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。 --with-http_ssl_module -开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl --with-http_flv_module - 启用 ngx_http_flv_module --with-http_stub_status_module - 启用 "server status" 页 --with-http_gzip_module – 启用 ngx_http_gzip_module. 如果启用,需要 zlib。 --http-client-body-temp-path=PATH -设置http客户端请求体临时文件路径 --http-proxy-temp-path=PATH -设置http代理临时文件路径 --http-fastcgi-temp-path=PATH -设置http fastcgi临时文件路径 --with-pcre=DIR - 指定 PCRE 库的源代码的路径。
也可以使用/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf来启动nginx
二、创建CA 1、编辑openssl的配置文件 vim /etc/pki/tls/openssl.cnf
2、新建那些需要但系统默认没有的目录和文件 [iyunv@server1 ~]# cd /etc/pki/CA [iyunv@server1 CA]# mkdir certs newcerts crl [iyunv@server1 CA]# touch index.txt serial 给serial文件一个初始值 [iyunv@server1 CA]# echo "01">serial 3、生成CA的私钥 [iyunv@server1 CA]# openssl genrsa 1024>private/cakey.pem 为了安全将CA的私钥文件修改下权限 [iyunv@server1 CA]# chmod 600 private/* 4、通过私钥产生数字证书 通过下面这条命令来生成一个数字证书 [iyunv@server1 CA]#openssl req -new -key private/cakey.pem-x509 -out cacert.pem
三、请求数字证书 首先新建一个目录用来存放web服务器的公钥、私钥和数字证书 [iyunv@server1 ~]# mkdir -pv /etc/nginx/certs 切换至这个目录 [iyunv@server1 ~]# cd /etc/nginx/certs/ 生成私钥文件 [iyunv@server1 certs]# openssl genrsa 1024>nginx.key 为了安全修改一下私钥文件的权限 [iyunv@server1 certs]# chmod 600 nginx.key 根据私钥文件长生证书请求文件,具体参数依实际情况而定 [iyunv@server1 certs]# openssl req -new -keynginx.key -out nginx.req 向CA请求数字证书 [iyunv@server1 certs]# openssl ca -in nginx.req-out nginx.cert
四、证书捆绑: 编辑/etc/nginx/nginx.conf以支持SSL
合并证书 [iyunv@server1 certs]#cp /etc/pki/CA/cacert.pem /etc/nginx/certs [iyunv@server1 certs]# cp nginx.cert nginx.cert.bak [iyunv@server1 certs]# cat nginx.cert.bak cacert.pem >nginx.cert 合并证书的目的是为了在客户端查看证书的时候能够看到证书链 在客户端添加地址解析记录
测试
|