nginx配置https服务器

最近学习研究nginx,通过修改其配置文件以及在编译时添加相关模块可以配置https服务器。

1.环境

Ubuntu 14.04 64bits
nginx version: nginx/1.0.15

2.编译安装

下载nginx源码并解压,运行configure脚本,会有一些默认安装的HTTP模块,不过要配置https服务器,则需要使Nginx支持SSL协议,这就需要安装http ssl module

./configure --with-http_ssl_module

执行完成后直接make; sudo make install,相关内容默认安装在/usr/local/nginx/目录下。

3.生成自签名的证书

显然这里的证书不可能由权威证书颁发机构(CA)签名,因为申请一个证书签名的费用大概在一年几十到几百刀不等。
不过可以使用OpenSSL工具创建生成一个自签名的证书,步骤如下:

a) 进入想创建证书和私钥的目录,例如:

$ cd /usr/local/nginx/conf

b) 创建私钥(需要输入一个口令):

$ openssl genrsa -des3 -out server.key 1024

c) 创建签名请求:

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

d) 移除私钥口令(否则在服务器启动nginx时会要求输入口令):

$ cp server.key server.key.org # 先备份
$ openssl rsa -in server.key.org -out server.key # 移除口令

e) 用私钥签名证书

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

4.修改配置nginx配置文件

在nginx配置文件的http块配置项中找到嵌套的server配置项,在默认配置中,https的相关配置已经被注释掉了,打开注释,修改其配置让其包含新标记的证书和私钥。https默认端口号是443,可以通过listen配置项修改监听的端口号

server {
    listen       1025;
    server_name  localhost;

    ssl                  on;
    ssl_certificate      /usr/local/nginx/conf/server.crt;
    ssl_certificate_key  /usr/local/nginx/conf/server.key.org;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

5.重启服务器并测试

重启nginx加载修改过的配置文件,在浏览器中访问,会出现证书不被信任的警告,效果参考12306,至于为什么12306要使用自签名的证书,参考为何从12306.cn订票时浏览器总是提醒证书不受信任?

这里写图片描述
这里写图片描述

6.参考

http://www.liaoxuefeng.com/article/0014189023237367e8d42829de24b6eaf893ca47df4fb5e000
https://www.centos.bz/2011/12/nginx-ssl-https-support/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值