技术控

    今日:120| 主题:49552
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 每日一博 | 简单6步用 nginx 搭建 https 服务器

[复制链接]
Lonelypartn 发表于 2016-10-5 08:11:55
59 0

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1.下载安装nginx:
  nginx可以从    这里选择对应版本下载,我下载的是1.8.1版本。下载完成后,直接解压缩,命令窗口进入根目录,输入命令:  
  1. start nginx
复制代码
在浏览器中,直接输入"localhost",可以看到nginx的欢迎页,表明启动成功。
  2.下载安装openssl:
  可从    这里选择适合自己的版本下载,我下载的是:    Win64 OpenSSL v1.1.0b Light,下载完成后,直接双击安装(安装选项一般默认即可)  
  3.生成证书
  在nginx根目录下新建ssl文件夹(名字可以自己定),并在命令窗口进入此目录,按照如下的几个命令,完成证书创建过程。
  1. #此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
  2. openssl genrsa -des3 -out jason.key 1024
复制代码
  1. #此步用于生成csr证书,jason.key为上一步骤生成的私钥名,jason.csr为证书,证书文件名可自定
  2. #在此步过程中,会交互式输入一系列的信息(所在国家、城市、组织等),其中Common Name一项代表nginx服务访问用到的域名,我这里是本地测试,所以可以随意定一个jason.com,并在本地host文件中将此域名映射为127.0.0.1
  3. openssl req -new -key jason.key -out jason.csr
复制代码
  1. #此步用于去除访问密码,如果不执行此步,在配置了ssl后,nginx启动会要求输入密码
  2. #jason.key为需要密码的key,jason-np.key为去除访问密码的key文件
  3. #操作过程中会要求输入密码,密码为生成key文件时的密码
  4. openssl rsa -in jason.key -out jason-np.key
复制代码
  1. #此步用于生成crt证书
  2. #jason.crt为第2步生成的csr证书名称,jason.crt为要生成的证书名称
  3. openssl x509 -req -days 366 -in jason.csr -signkey jason-np.key -out jason.crt
复制代码
经过以上几个步骤,证书生成完毕,ssl文件夹下的jason.crt和jason-np.key为我们后续要使用的文件。
  注:在执行openssl命令时,可能会出现提示找不到openssl配置文件:  
  1. can't open config file: /etc/ssl/openssl.cnf
复制代码
实际配置文件存在,但不在这个目录(可以在openssl安装目录找到),我们可以直接在命令窗口设置下环境变量,使其指向正确的位置
  1. #请根据你自己的安装目录调整
  2. set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg
复制代码
4.nginx配置ssl
  打开nginx目录下conf\nginx.conf文件,找到HTTPS server的配置,将配置项前面的注释符号去掉
  修改前配置内容如下:
  1. # HTTPS server
  2.     #
  3.     #server {
  4.     #    listen       443 ssl;
  5.     #    server_name  localhost;
  6.     #    ssl_certificate      cert.pem;
  7.     #    ssl_certificate_key  cert.key;
  8.     #    ssl_session_cache    shared:SSL:1m;
  9.     #    ssl_session_timeout  5m;
  10.     #    ssl_ciphers  HIGH:!aNULL:!MD5;
  11.     #    ssl_prefer_server_ciphers  on;
  12.     #    location / {
  13.     #        root   html;
  14.     #        index  index.html index.htm;
  15.     #    }
  16.     #}
复制代码
修改后配置内容如下:
  1. # HTTPS server
  2.     server {
  3.         listen       443 ssl;
  4.         server_name  front;
  5.         ssl_certificate      ./ssl/jason.crt;
  6.         ssl_certificate_key  ./ssl/jason-np.key;
  7.         #ssl_session_cache    shared:SSL:1m;
  8.         ssl_session_timeout  5m;
  9.         ssl_ciphers  HIGH:!aNULL:!MD5;
  10.         ssl_prefer_server_ciphers  on;
  11.         location / {
  12.             root   html;
  13.             index  index.html index.htm;
  14.         }
  15.     }
复制代码
5.配置重定向,http请求自动跳转到https
  如果我们希望强制使用https,可以将http的请求重定向到https,只需要在http对应server配置中添加rewrite
  1. server {
  2.         listen       80;
  3.         server_name  jason.com;        
  4.         rewrite ^(.*) https://$server_name$1 permanent;
  5.         #省略其他配置......
  6. }
复制代码
6.启动nginx
  命令窗口进入到nginx根目录,使用以下命令重新加载nginx配置文件
  1. #此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
  2. openssl genrsa -des3 -out jason.key 10240
复制代码
这里有两点需要注意:
  1)由于nginx的cache模块需要用到共享内容,所以官方提示在window Vista之后的版本是不支持cache模块的,所以在配置文件中,ssl_session_cache一行不要注释掉,否则启动会报错
  2)nginxssl使用的是443端口,如果系统中443已经被占用,在nginx的error.log文件中会有报错,且无法正常启动
  1. #此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
  2. openssl genrsa -des3 -out jason.key 10241
复制代码
遇到这个问题,可在命令窗口通过以下命令查找占用端口的进程
  1. #此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
  2. openssl genrsa -des3 -out jason.key 10242
复制代码
结果列表中第2列代表进程监听的ip和端口,最后一列代表进程id,可根据id杀掉对应进程即可(有些进程是由系统服务启动的,需要关闭服务才行)。
  正常启动后,浏览器中输入https://jason.com(jason.com是在第3步第2个命令中指定的),出现nginx欢迎页面,说明已配置成功。
友荐云推荐




上一篇:《APP 研发录》重构,夜未眠 学习笔记
下一篇:Apex.sh?
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表