ENGLISH 4006-967-446
首页>安全资讯>nginx配置ssl证书流程及常见问题

nginx配置ssl证书流程及常见问题

项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为要求通过HTTPS://进行访问。SSL英文名为Secure Socket Layer,安全套接字层。SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输。

前提:1.配置SSL模块首先需要CA证书,CA证书可以在CA机构申请。2.默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数。

操作步骤:

一、下载CA证书

在已经购买好的证书点击“下载”,在新打开的页面上选择“Nginx/Tengine”,点击“下载证书for Nginx”。

二、在Nginx配置文件中安装证书

文件说明:

证书文件“证书名称.pem‘’,包含两段内容,请不要删除任何一段内容。

如果是证书系统创建的CSR,还包含:证书私钥文件“证书名称.key”。

(1)在Nginx的配置文件所在的目录下创建cert文件夹,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为“证书名称.key”;

(2)打开Nginx安装目录下conf目录中的文件,找到:

nginx配置ssl证书流程及常见问题

(3)将其修改为(以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :

nginx配置ssl证书流程及常见问题

保存退出。

(4)重启Nginx。

nginx -s reload

(5)通过https方式访问您的站点,测试站点证书的安装配置。在浏览器中输入https://

安装过程中遇见的问题

错误一:

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/:151

解决方案:

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

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

情况二:ssl模块并未被安装

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数,这种情况也会导致错误二的出现。

解决方案:

nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/目录

(1)切换到源码包:cd /root/

(2)配置信息:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

(3)配置完成后,运行make进行编译,千万不要进行make install,否则就是覆盖安装。

(4)然后备份原有已经安装好的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/

(5)停止Nginx,正常命令直接nginx -s stop就可以

nginx -s stop

如果关不掉,就直接Kill掉进程。ps aux | grep 进程名 查看进程占用的PID号。

ps aux|grep nginx

删掉查出来的PID就可以了

(6)将刚刚编译好的nginx覆盖掉原有的nginx

cp ./objs/nginx /usr/local/nginx/sbin/

(7)启动nginx

(8)通过下面的命令查看是否已经加入成功。

nginx -V

错误二:

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/:148

解决方案:

出现这种情况的解决方案参考错误一的第二种情况的解决方案即可。

错误三:

Stoping nginx... nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/cert/") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert/','r') error:2006D080:BIO routines:BIO_new_file:no such file) failed. Use force-quit

解决方案:

这可能是证书路径存放的位置不正确导致的,而且只要写绝对路径,就会报错,无论windows还是linux。

将证书文件放到所在的目录下即可

最新资讯

代码签名证书原理和作用

Hash算法的特点、应用和实现方法详解

rsa算法产生的过程与原理详解

Windows\Apple\Mozilla\Android删除根证书的方法

Firefox浏览器中出现SSL证书错误的解决方法

标签推荐:数字证书申请 | 域名ssl证书 | https证书申请| 数字证书过期| 网站证书安装| 可靠的ssl证书| 小程序证书| ca认证电子签名| 微软代码签名| android数字签名| java代码签名| ssl证书部署| 时间戳技术| 电子签名技术| https证书配置| 谷歌浏览器证书| tomcat数字证书| openssl漏洞| ECC加密算法| 服务器SSL证书| 链路层劫持| 物联网安全技术| 火狐插件签名证书