Nginx https的安装配置以及证书的使用

一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
1.选定源码目录
选定目录 /usr/local/
cd /usr/local/
2.安装PCRE库
cd /usr/local/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure
make
make install

3.安装zlib库
cd /usr/local/ 
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8
./configure
make
make install

4.安装ssl
cd /usr/local/
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz
./config --prefix=/usr/local/ssl shared zlib-dynamicmake
make install

5.安装nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把Nginx 安装到 /usr/local/nginx 目录下的详细步骤:

cd /usr/local/
wget http://nginx.org/download/nginx-1.2.8.tar.gz
tar -zxvf nginx-1.2.8.tar.gz
cd nginx-1.2.8 
这步是关键,如果不加的话在配置nginx.conf的时候会报类似这样的错误:
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/nginx.conf:8 
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed 
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module
make
make install

--with-pcre=/usr/src/pcre-8.21 指的是pcre-8.21 的源码路径。
--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。

6.启动
/usr/local/nginx/sbin/nginx –t //测试
/usr/local/nginx/sbin/nginx //启动
提示错误:/usr/local/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file or directory
解决方法:
确认已经安装PCRE: 
cd /lib 
ls *pcre* 
libpcre.so.0 libpcre.so.0.0.1 
find / -type f -name *libpcre.so.* 
添加软链接: 
ln -s /lib/libpcre.so.0.0.1 /lib/libpcre.so.1 
前面在一般的linux上可以解决此问题.

注: 在有的操作系统上面,安装pcre后,安装的位置为/usr/local/lib/*pcre*
在redhat 64位机器之上有这样的情况.
在redhat 64位机器上, nginx可能读取的pcre文件为/lib64/libpcre.so.1文件.
所以在改用下面的软连接: 
ln -s /usr/local/lib/libpcre.so.1 /lib64/ 
检查是否启动成功:
netstat -ano|grep 80 有结果输入说明启动成功

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

7.生成证书:
这步需要找到openssl安装目录下的misc文件夹 和openssl.cnf文件
前面安装openssl时通过--prefix指定的安装目录是/usr/local/ssl
所以misc在 /usr/local/ssl/ssl 下 openssl.cnf 也在其中。
新建一个文件夹,myca 将两个文件拷贝到myca下
#生成工作目录产生CA凭证
ca.crt为自签名证书;
server.crt,server.key为服务器端的证书和私钥文件;
proxy.crt,proxy.key为代理服务器端的证书和私钥文件;
client.crt,client.key为客户端的证书和私钥文件。

具体步骤:




一、怎样获取免费证书

这里提供两个方法:

第一种:如果你是windows用户,且有.keystore格式的证书

那么你可以使用JKS2PFX转换工具,将你的keystore证书转换为PEM证书,操作方法为:cd到工具目录,然后运行命令:

$ JKS2PFX

第二种:如果你是Linux或者OSX系统

生成秘钥key,运行:

$ openssl genrsa -des3 -out server.key 2048

会有两次要求输入密码,输入同一个即可

输入密码

然后你就获得了一个server.key文件. 
以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令:

$ openssl rsa -in server.key -out server.key

创建服务器证书的申请文件server.csr,运行:

openssl req -new -key server.key -out server.csr

其中Country Name填CN,Common Name填主机名也可以不填,如果不填浏览器会认为不安全.(例如你以后的url为https://abcd/xxxx….这里就可以填abcd),其他的都可以不填. 
创建CA证书:

openssl req -new -x509 -key server.key -out ca.crt -days 3650

此时,你可以得到一个ca.crt的证书,这个证书用来给自己的证书签名. 
创建自当前日期起有效期为期十年的服务器证书server.crt:

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

ls你的文件夹,可以看到一共生成了5个文件:

ca.crt  ca.srl  server.crt server.csr server.key

其中,server.crt和server.key就是你的nginx需要的证书文件. 
二、如何配置nginx

打开你的nginx配置文件,搜索443找到https的配置,去掉这段代码的注释.或者直接复制我下面的这段配置:

server {

   listen   443 ssl;
     server_name  192.168.71.130;
     ssl on;     #要使用生成的服务器的证书和key,使用绝对路径
     ssl_certificate      /usr/soft/server.crt;#配置证书绝对路径
     ssl_certificate_key  /usr/soft/server.key;#配置秘钥绝对路径
     #ssl_client_certificate ca.crt;#双向认证
     #ssl_verify_client on; #双向认证
     ssl_session_timeout  5m;
     ssl_protocols SSLv2 SSLv3 TLSv1;
     ssl_ciphers HIGH:!aNULL:!MD5;
     ssl_prefer_server_ciphers on;

将ssl_certificate改为server.crt的路径,将ssl_certificate_key改为server.key的路径. 
nginx -s reload 重载配置 
至此,nginx的https就可以使用了,默认443端口.




8.重启
/usr/local/nginx/sbin/nginx -s reload
停止: ps –ef |grep nginx

killall nginx


Kill –QUIT 进程号
Kill –TERM 进程
Pkill –q nginx

9.修改配置文件
cd /usr/local/nginx/conf
vi nginx.conf
============================nginx.conf==========================
#user nobody; 
worker_processes 1; 

events { 
worker_connections 1024; 


http { 
include mime.types; 
default_type application/octet-stream; 

sendfile on; 

keepalive_timeout 65; 

server { 
#本机的ip地址:https的端口号443 
listen 192.168.62.128:443; 
ssl on; 
#要使用生成的服务器的证书和key,使用绝对路径 
ssl_certificate           /etc/pki/CA/certs/server.crt; 
ssl_certificate_key  /etc/pki/CA/private/server.key; 

ssl_session_timeout 5m; 

ssl_protocols SSLv2 SSLv3 TLSv1; 
ssl_ciphers HIGH:!aNULL:!MD5; 
ssl_prefer_server_ciphers on; 
#定义在浏览器里输入的网址 
server_name www.mynginx20140416.com

--------------------------------------此为双向认证------------------------------------------
server {
                #本机的ip地址:https的端口号443
                #listen 192.168.71.130:443;
                listen   80;
                listen  443 ssl;
                server_name  192.168.71.130;


                #ssl on;
                #要使用生成的服务器的证书和key,使用绝对路径
                ssl_certificate           /usr/soft/server.crt;
                ssl_certificate_key       /usr/soft/server.key;


                ssl_session_timeout 5m;


                ssl_protocols SSLv2 SSLv3 TLSv1;
                ssl_ciphers HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers on;
 }
---------------------------------------------------------------------------------------------
location / { 
root /nginxhome; 
#/nginxhome 下的两个文件,index.html 和index.htm 里面是连接后显示的内容 
index index.html index.htm; 


location =/50x.html { 
root html; 





10.配置完成后重启服务器
本机直接输入定义的https://www.mynginx20140416.com
其他机器的浏览器输入:ip地址:443
如果访问不了的话,使用setup命令关掉服务器的防火墙。



使用curl 测试
Curl –k https://192.168.62.128:443
显示你在/nginxhome目录下的index.html中输入的内容证明搭建成功了

向服务器传送文件
Curl –T localfile –k https://192.168.62.128:443
如果出现 
<html>
<head><title>405Not Allowed</title></head>
<bodybgcolor="white">
<center><h1>405Not Allowed</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>

说明需要加入PUT GET 等方法
在安装编译nginx时加入 --with-http_dav_module这个模块
./configure --with-http_dav_module
在/usr/local/nginx/conf/nginx.conf中修改
location / {
root /var/www;
dav_methods PUT;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值