当前位置 主页 > 服务器问题 > nginx问题汇总 >

nginx使用ssl模块配置支持HTTPS访问步骤

栏目:nginx问题汇总 时间:2018-12-13 13:03

  背景:
  项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 dmsdbj.com 要求通过HTTPS://dmsdbj.com进行访问.
  SSL英文名为Secure Socket Layer,安全套接字层。SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输.
  前提:
  1. 配置SSL模块首先需要CA证书,CA证书可以自己手动颁发也可以在阿里云申请,本人在阿里云上申请的证书。(手动颁发可参考文章底部链接)
  2. 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数.
  阿里云购买CA证书
  操作步骤:
  一、下载CA证书
  1. 登录阿里云,选择“控制台”-“产品与服务”,在“安全(云盾)”一栏中选择“CA证书服务(数据安全)”。
  2.在已经购买好的证书点击“下载”,在新打开的页面上选择“Nginx/Tengine”,点击“下载证书for Nginx”。
  二、在Nginx配置文件中安装证书
  文件说明:1. 证书文件“证书名称.pem‘',包含两段内容,请不要删除任何一段内容。2. 如果是证书系统创建的CSR,还包含:证书私钥文件“证书名称.key”。( 1 ) 在Nginx的配置文件所在的目录下创建cert文件夹,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为“证书名称.key”;
  ( 2 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:
  # HTTPS server
  # #server {
  # listen 443;
  # server_name localhost;
  # ssl on;
  # ssl_certificate cert.pem;
  # ssl_certificate_key cert.key;
  # ssl_session_timeout 5m;
  # ssl_protocols SSLv2 SSLv3 TLSv1;
  # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  # ssl_prefer_server_ciphers on;
  # location / {
  #
  #
  #}
  #}
  ( 3 ) 将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :
  server {
  listen 443;
  server_name localhost;
  ssl on;
  root html;
  index index.html index.htm;
  ssl_certificate  cert/证书名称.pem;
  ssl_certificate_key cert/证书名称.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  location / {
  root html;
  index index.html index.htm;
  }
  }
  保存退出。
  ( 4 )重启 Nginx。
  nginx -s reload
  ( 5 ) 通过 https 方式访问您的站点,测试站点证书的安装配置。 在浏览器中输入https://dmsdbj.com,如下图所示,则说明配置成功。
  安装过程中遇见的问题
  错误一:
  nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:151
  解决方案:
  出现这种错误可能是两种情况造成的:
  情况一:配置文件格式不正确。
  解决方法参考链接:https://www.jb51.net/article/141569.htm
  情况二:ssl模块并未被安装
  默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数,这种情况也会导致错误二的出现。
  解决方案:
  nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.3.6目录
  (1)切换到源码包:
  cd /root/nginx-1.13.6
  (2)配置信息:
  ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  (3)配置完成后,运行make进行编译,千万不要进行make install,否则就是覆盖安装。
  mark
  (4)然后备份原有已经安装好的nginx
  cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
  (5)停止Nginx,正常命令直接 nginx -s stop就可以
  nginx -s stop
  如果关不掉,就直接Kill掉进程。ps aux | grep 进程名 查看进程占用的PID号。
  ps aux|grep nginx
  杀掉查出来的PID就可以了,kill -9 PID 命令用于终止进程。必须先kill掉root对应的PID才能进行下面的三个nobody的PID。
  kill -9 10922
  kill -9 28276
  kill -9 28277
  kill -9 28278
  (6)将刚刚编译好的nginx覆盖掉原有的nginx
  cp ./objs/nginx /usr/local/nginx/sbin/
  (7)启动nginx
  nginx
  (8)通过下面的命令查看是否已经加入成功。
  nginx -V
  错误二:
  nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:148
  解决方案:
  出现这种情况的解决方案参考错误一的第二种情况的解决方案即可。
  错误三:
  Stoping nginx... nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/cert/214291778530222.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert/214291778530222.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) failed. Use force-quit
  解决方案:
  这可能是证书路径存放的位置不正确导致的,而且只要写绝对路径,就会报错,无论windows还是linux。
  将证书文件放到nginx.conf所在的目录下即可。
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全