Nginx配置ssl,实现https访问
大家都知道现在如果你访问一个网站,如果是http开头的访问,状态栏地址会显示不安全,如下图
但如果是https访问,会显示安全,如下图
原因:
HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。
为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。
简单来说,HTTPS协议="SSL+HTTP协议"构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版。
解决办法:
Nginx部署ssl证书
1.首先我们可以去申请一份ssl证书,我是在西部数码申请的,花了一块大洋,在疫情期间的我省吃俭用才凑得一块钱!!
立即申请,一块大洋,慎重考虑
按需申请
好了,其实按西部数码的流程来就行了,还要在服务器上放一个txt文件验证,当然西部数码是这样,其他的不知道,得到ssl证书后下载解压,如下图会得到两个这个文件
2.我把它俩兄弟放在了 /usr/local/nginx/conf/ 目录下,也就是nginx默认安装路径下
3.检查nginx是否安装了ssl模块,进入到 /usr/local/nginx/sbin/ 输入 ./nginx -V 注意 大写的V还有那个小数点,如果有如图红框内的东西,说明安装了,否则没有安装ssl模块,怎么装下面有教程
4.编辑/usr/local/nginx/conf/下的nginx.conf文件,添加如下代码,路径改为你存放证书的路径,监听端口也需要改成443
ssl_certificate /usr/local/nginx/conf/www.orscloud.cn.crt; #需将_www.domain.com.cer 中的内容复制到这个文件头部,中间不要有空行 ssl_certificate_key /usr/local/nginx/conf/www.orscloud.cn.key; #证书密钥文件 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;
改好后如下图
5.改好后重启nginx 命令 ./nginx -s reload ,现在就可以使用https访问啦
Nginx安装SSL模块教程
问题:如果没安装该模块,重启nginx会报错:nginx: [emerg] unknown directive "ssl_certificate" xxxxxxxx
1.找到你以前安装nginx前解压nginx的目录,如果删了 从新下载,记住不是安装后/usr/local/nginx的目录 进入目录后你会看到有个configure,对就是它!
2.输入如下命令添加这个模块
./configure --with-http_ssl_module
3.输入如下命令编译,记住千万不要安装(make install),否则会覆盖之前的nginx配置
make
4.然后你会看到有个objs文件夹,文件夹内有个nginx文件,复制到/usr/local/nginx/sbin文件夹下,复制前先备份
备份
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
拷贝
cp objs/nginx /usr/local/nginx/sbin/nginx
5.ssl模块安装完了,可以继续Nginx部署ssl证书的步骤了