nginx环境下结合SSL

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

合并证书的目的是为了在客户端查看证书的时候能够看到证书链

在客户端添加地址解析记录

测试

 

你可能感兴趣的:(nginx,linux,服务器,https,ssl)