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/src/
tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src/
--conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf
--error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为<prefix>/logs/error.log
--http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为<prefix>/logs/access.log
--pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为<prefix>/logs/nginx.pid。
--lock-path=<path> - nginx.lock文件的路径。
--user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。
--group=<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 �C 启用 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、新建那些需要但系统默认没有的目录和文件
[root@server1 ~]# cd /etc/pki/CA
[root@server1 CA]# mkdir certs newcerts crl
[root@server1 CA]# touch index.txt serial
给serial文件一个初始值
[root@server1 CA]# echo "01">serial
3、生成CA的私钥
[root@server1 CA]# openssl genrsa 1024>private/cakey.pem
为了安全将CA的私钥文件修改下权限
[root@server1 CA]# chmod 600 private/*
4、通过私钥产生数字证书
通过下面这条命令来生成一个数字证书
[root@server1 CA]#openssl req -new -key private/cakey.pem-x509 -out cacert.pem
三、请求数字证书
首先新建一个目录用来存放web服务器的公钥、私钥和数字证书
[root@server1 ~]# mkdir -pv /etc/nginx/certs
切换至这个目录
[root@server1 ~]# cd /etc/nginx/certs/
生成私钥文件
[root@server1 certs]# openssl genrsa 1024>nginx.key
为了安全修改一下私钥文件的权限
[root@server1 certs]# chmod 600 nginx.key
根据私钥文件长生证书请求文件,具体参数依实际情况而定
[root@server1 certs]# openssl req -new -keynginx.key -out nginx.req
向CA请求数字证书
[root@server1 certs]# openssl ca -in nginx.req-out nginx.cert
四、证书捆绑:
编辑/etc/nginx/nginx.conf以支持SSL
合并证书
[root@server1 certs]#cp /etc/pki/CA/cacert.pem /etc/nginx/certs
[root@server1 certs]# cp nginx.cert nginx.cert.bak
[root@server1 certs]# cat nginx.cert.bak cacert.pem >nginx.cert
合并证书的目的是为了在客户端查看证书的时候能够看到证书链
在客户端添加地址解析记录
测试