背景:

项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 XXX.com 要求通过HTTPS://XXX.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

解决方案:

出现这种错误可能是两种情况造成的:

情况一:配置文件格式不正确。

解决方法参考链接:http://blog.csdn.net/yuanyuan_186/article/details/51324082

情况二: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,否则就是覆盖安装。

make

(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所在的目录下即可。

参考博客:

http://blog.csdn.net/wm_1991/article/details/51925062

http://blog.csdn.net/kwy15732621629/article/details/76602241

nginx使用ssl模块配置支持HTTPS访问相关推荐

  1. Nginx系列之使用ssl模块配置支持代理HTTPS链接

    Nginx系列之使用ssl模块配置支持HTTPS访问 1.博客前言介绍 最近在用nginx代理https的第三方链接,因为不是做运维,所以对nginx并不是特殊熟悉,所以到处询问摸索了挺久 2.查看s ...

  2. Spinnaker篇-配置支持https访问

    1 前提 准备好域名 1)买,我用的是买的 2)当然也可以申请免费的(https://freessl.cn/ 根据提示操作即可) 3)还可以自己制作证书(https://github.com/opsn ...

  3. windows下基于wvp-GB28181-pro+ZLMediaKit实现的GB28181媒体流服务+实现ssl证书配置实现https访问

    需要实现摄像头接入功能,实现录像回放功能,并且预算有限,没有硬盘录像机,没有vpn路由器,只有能联网的摄像头,经过一周的努力,终于实现了全部的功能. 首先准备工作,需要准备的软件有 1.git,必不可 ...

  4. Nginx SSL模块配置提供HTTPS支持(Ngx_http_ssl_module)

    Ngx_http_ssl_module:此模块为Nginx提供HTTPS支持: 官方文档:http://nginx.org/en/docs/http/ngx_http_ssl_module.html ...

  5. httpd开启status模块_Nginx高并发系列之二——Nginx开启ssl模块

    在上一期中我们安装配置了nginx1.13.7版本并且成功启动,那么这一期就针对安装的Nginx支持ssl模块--即开启https功能.如果还有不知道如何安装与配置的请移至: 水番丘山:Nginx高并 ...

  6. nginx配置监听443端口,开启ssl协议,走 https 访问

    本文目录 前言 一.检查 linux 服务器上的 nginx 是否安装 ssl 模块 二:为 nginx 安装 ssl 模块 三.nginx 开启 443 端口监听(https配置) 成功配好后的效果 ...

  7. Nginx安装ssl模块和配置ssl证书

    ssl证书概要 SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 [1] 就是遵守 SSL协议,由受信任的数字证书颁发机构 ...

  8. WebLoading开源库,支持https访问

    WebLoading开源库,支持https访问 关于 引用 使用 第一步,添加控件 第二步,在活动页面实例化,并使用 效果图 进阶使用 去除类似广告头部或其他元素 实现页面回退 可DIY进度条加载样式 ...

  9. nginx安装配置ssl模块支持https访问

    文章目录 一.SSL证书 申请免费证书或者购买 1.证书下载 2.配置Nginx 常见错误 错误一: 解决方案: 错误二: 解决方案: 错误三:配置好后https仍然无法访问 情况1:端口443未开放 ...

最新文章

  1. Android SDK 路径修改
  2. idea整合 spring boot jsp mybatis
  3. Ubuntu中启用关闭Network-manager网络设置问题!
  4. 【文本信息抽取与结构化】深入了解关系抽取你需要知道的东西
  5. vnc数量限制_通过限制视觉效果在Vista上加速VNC
  6. jvm 堆 比例_JVM调优原则
  7. 程序员水平自测题:程序员们,想知道你的技术达到了什么水平吗?
  8. php 多态实现案例
  9. PPT排版细节,写给大家看的设计书,完美总结
  10. 机器学习之实战matlab神经网络工具箱
  11. animation之二,使用xml控制animat…
  12. 【CSS手册】css
  13. 均方距离计算公式_均方末端距的统计计算法.ppt
  14. 支付宝免费领取7天优酷黄金会员 1.88元购买1个月优酷黄金会员
  15. html里如何将数字转换为条形码,excel中如何把数字变成条形码?
  16. 不是抽象类的基类不是好基类
  17. 自定义注解以及通过aop实现注解横切(日志)
  18. 睿慕课点云第二章报错及解决(二)
  19. Mac安装Texpad1.7.40
  20. C# --什么时候用迭代器(Iterator)?

热门文章

  1. 怎么用计算机连接电视,电脑怎么连接电视 详细步骤【图文】
  2. 记一次上海更换驾驶证记录
  3. ThinkPHP6.0 入门【一】,安装,运行,测试,配置
  4. 零基础JavaScript入门教程(1)–走进JavaScript的世界
  5. 女大学生华硕维权被关10月冤狱 将获国家赔偿(图)
  6. 邓可笈:结缘RT-Thread,共同探索AIOT领域的发展
  7. 基于区块链的nft盲盒游戏开发
  8. 页面table导出Excel——table2excel
  9. cc.armature_ReCore中的全球照明:我们与Microsoft和Armature的合作
  10. cocos2dx骨骼动画Armature源码分析(三)