背景:

项目开发中用到了微信小程序,但是服务器配置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 方式访问您的站点,测试站点证书的安装配置。 在浏览器中输入你的网址,如下图所示,则说明配置成功。

安装过程中遇见的问题

错误一:

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,或者直接

pkill -9 nginx

(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

解决方案:

这可能是证书路径存放的位置不正确导致的。

将证书文件放到nginx.conf所在的目录下即可,如果不行,将nginx配置文件中的证书位置换成绝对路径。

nginx配置ssl证书流程及常见问题的更多相关文章

  1. Nginx - 配置 SSL证书

    nginx 配置 ssl 证书: 在nginx配置目录创建 cert目录 放置 SSL 的证书秘钥: 也可以使用配置绝对路径 /file/cert/cert.pem server { listen s ...

  2. nginx配置ssl证书的方法

    Nginx (读音"engine x") 是一个高性能的HTTP和反向代理服务器,比Apache占用更少的内存,同时也像Apache一样支持HTTPS方式访问(SSL加密).本教程 ...

  3. linux下nginx配置ssl证书(https)

    nginx配置ssl很简单,首先需要两个文件,一个是crt文件,另一个是key文件,如下所示: xxx.crt;  #(证书公钥)xxx.key; #(证书私钥) 把这两个文件放到nginx的conf ...

  4. nginx配置ssl证书后无法访问https

    一直听说https更安全,要安装证书,一直没试过,今天终于试了试 首先得有个http的域名网站,服务器. 到阿里云的安全-ssl证书管理申请一个免费的,可以绑定一个域名  然后完善资料,照着例子配置一 ...

  5. Nginx配置SSL证书部署HTTPS网站

    1.购买ssl证书 购买网站:沃通 2.上传证书到nginx服务器,然后进行解压. 解压后的的效果: [root@bubidev-ng3 nginx]# pwd/etc/nginx [root@bub ...

  6. linux nginx 配置ssl证书访问

    http://www.linuxidc.com/Linux/2013-08/88271.htm 一.什么是 SSL 证书,什么是 HTTPSSSL 证书是一种数字证书,它使用 Secure Socke ...

  7. centos7 nginx配置ssl证书实现https访问同时http访问

    1,首先将你申请到的nginx 分类下的ssl证书上传到nginx的config下(可以新建一个目录叫ssl.) 2.修改nginx的config配置 server {listen 80;(监听80端 ...

  8. Nginx配置SSL证书部署HTTPS方法

    1.申请域名,绑定服务器ip(我申请的是阿里云服务器,以下就此为例) 2.可以在阿里云上免费申请SSL证书(下载证书,后续会用到) 3.在服务器中配置证书 在服务器上安装Nginx 将下载好的证书上传 ...

  9. nginx配置ssl证书实现https访问

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...

随机推荐

  1. Spring Data学习中心

    Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map ...

  2. jupyterlab数据处理

    目录 jupyterlab: jupyterlab简介: jupyterlab特点: jupyterlab安装,启动 使用jupyterlab: 设置jupyterlab jupyterlab: ju ...

  3. [TJOI2009]猜数字(洛谷 3868)

    题目描述 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n,满足对于任意 ...

  4. linux脚本中有source相关命令时的注意事项

    写这个问题起因是因为一个同学去的java一键脚本环境变量设置问题, [root@localhost u01]# more 1.sh #!/bin/bash grep -q "export J ...

  5. 关于qt creator各种假死的问题

    来自CSDN网友( qq191329827)内容,亲自尝试,且经历一致: 我有两个笔记本,1个台式机,都装了qt, 然后,我的thinkpad x1c,装上之后creator各种假死,网上看了好多解决 ...

  6. 停止IIS服务

    1 第一步 停止 World Wide Web Publishing Service     这个是W3C服务 2 第二部 停止 IIS Admin Service  这个IIS元数据管理服务

  7. Jmeter之Bean shell使用(二)(转载)

    转载地址:https://www.cnblogs.com/puresoul/p/4949889.html 上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean she ...

  8. AKKA HTTP 简单示例

    AKKA HTTP 简单示例 依赖包: compile("com.typesafe.akka:akka-http_2.13:10.1.8") compile("com.t ...

  9. sql 语言--- DML,DDL,DQL,DCL,TCL,CCL

    结构化查询语言(Structured Query Language)简称SQL                是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理 ...

  10. idea 2019.2 版本把菜单栏隐藏了恢复办法

    一不小心把idea的菜单栏给隐藏了(如图) ,搞了半天也恢复不了,网上也没有找到什么办法,可是搞得我焦头烂额呀,怎么找也找不到,也不见大神有过提示,最后没办法,想着去看看它的配置文件吧,于是便找到了默 ...