如何在nginx下配置ssl证书实现https访问,小白都会【超详细】
off999 2025-01-18 23:08 13 浏览 0 评论
为什么要配置https?
在互联网时代,信息泄露会给工作和生活带来很大的困扰,会源源不断的收到垃圾短信和各种推销电话和诈骗电话的骚扰。隐私泄露后可能会 让不法分子钻空子来获取你的信任从而使人更容易上当受骗。对于企业网站来说,不能保护好用户的隐私信息可能会面临行政罚款,同时还会损害企业的形象和声誉。
因此,企业网站应提前采取保护网络安全措施,防患于未然,而为网站部署SSL证书实现https加密是保护网络安全的基础。
尤其是微信开发、APP开发等都是强制的,SSL证书除了可以加快搜索引擎收录以外,还确保客户端与站点传输数据的加密作用,所有操作系统都可以部署。
http与https的区别
https相比http多了个s,这个“s”指的是secure(可翻译为安全的、可靠的),即http + 加密 + 认证 + 完整性保护 = https,其实就是多了ssl协议这层外壳的http,这就是它们最大的区别(如下图)。还有以下几点主要的区别:
- https协议需要申请CA证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;https协议是有ssl + http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
接下来就是从头开始配置https的全过程
一、环境说明
服务器系统:CenterOS 7
服务器IP:106.14.***.***(自己服务器的IP)
域名:shine***.cn(自己的域名)
二、添加域名解析
以阿里为例,在阿里云控制台=>产品域服务=>云解析DNS=>找到需要解析的域名,点击【解析】,进入解析页面后选择【添加解析】。
下图中第一、二个是域名常规配置,如已配请忽略,主要是第三个,是在申请证书验证时所需要的(具体所需要填的值后面步骤会提到)。
三、申请SSL证书
在阿里云控制台=>产品与服务=>安全(云盾)=>SSL证书,进入后点击【购买证书】。
如下图我选择的是“免费版DV SSL”,有1年的有效期。
确认购买后,点击证书列表里的【证书申请】
填写相关信息,从“域名验证方式”开始往下的默认就好
下一步,如果出现下图中错误提示,说明我在上面第二步提到的域名解析里没有添加第三个的解析。
解决办法则是,添加域名解析,“主机记录值“与”记录值“直接复制上图中的值就好,记录类型选择“TXT”,然后确认即可再次回到这里点击验证。
验证通过后,可能需要等待几分钟时间,等证书状态变为“已签发”,就可以下载了。
四、下载证书
在列表中找到已签发的证书,点击【下载】,选择nginx的进行下载
下载后,会得到一个压缩包,里面会有两个文件(.key和.pem文件)
五、登陆服务器,配置SSL证书
1.进入nginx安装目录:/usr/local/nginx (这是我服务器上nginx安装目录),新建cert/文件夹,把刚才下载的两个文件上传到cert/目录下。
2.在nginx/conf/目录下,编辑nginx配置文件nginx.conf(最好先做下备份),修改如下:
server {
listen 8082;
listen 8083 ssl; #这里原本默认是443端口,我自定义改用8083了,可以不改
server_name www.shine***.cn; #自己的域名
root /usr/local/nginx/html/baseManage; #这里是我自定义的访问根目录
ssl_certificate /usr/local/nginx/cert/3833729_www.shine***.cn.pem; #SSL配置 后面是写.pem文件所在的路径
ssl_certificate_key /usr/local/nginx/cert/3833729_www.shine***.cn.key; #SSL配置 后面是写.key文件所在的路径
ssl_session_cache shared:SSL:1m; #SSL配置
ssl_session_timeout 5m; #SSL配置
ssl_ciphers HIGH:!aNULL:!MD5; #SSL配置
ssl_prefer_server_ciphers on; #SSL配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.修改配置保存后,检查一下nginx配置文件是否可用,有successful输出表示可用。
$ nginx -t // 检查nginx配置文件
这里,大多数可能是第一次安装https证书,就会出现报错,说是缺少SSL模块(如果没有提示缺少SSL模块,可以直接操作步骤4),如下图:
3.1这个时候我们就需要先安装SSL模块,目录切换到nginx源码包安装位置(就是有configure执行文件的目录下):
$ cd /usr/local/nginx
3.2执行语句,安装SSL模块:
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
3.3这时候可能又会有点小问题,启动SSL模块的时候报错了:
看到了error,就知道Linux安装失败,停止了。这个错误是因为我们没有安装openssl openssl-devel(如果没有这一步的报错的话,可以忽略跳过下面的3.4安装openssl-devel的步骤,直接操作3.5的步骤)
3.4执行安装openssl openssl-devel命令:
$ yum -y install openssl openssl-devel
安装上openssl-devel后,重新执行./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
3.5配置成功后,那么就需要编译我们的配置。(注意:这里只能用make,而不要用make install,因为执行make install是覆盖安装的意思)
$ make
等待执行完成后,我们需要把新编译的nginx模块替换原来的nginx。
3.6还是老规矩,先备份就的nginx执行文件(命令里的路径根据自己实际情况修改):
$ cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
3.7关闭nginx(因为要把新的模块覆盖就的nginx),通过命令找到进程号,在杀死该进程就可以了,执行命令:
$ ps -ef |grep nginx #查看进程号
$ kill -9 进程号
3.8关闭nginx进程后就可以开始替换了,执行命令:
$ cp /usr/local/nginx/objs/nginx /usr/local/nginx/sbin/
3.9然后就是启动nginx。
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
因为刚才替换nginx模块时把nginx进程都kill掉了,所有要用上面的命令进行启动,而不是使用reload重启。
4.配置正确后,需要重新加载nginx配置文件才可以使修改的配置生效
$ nginx -s reload // 使配置生效
到此,nginx的https访问就完成了。访问效果如下:
说明:如果访问不成功,则需要去检查实例的安全组,是否有配置开放对应的端口;如没有,则需要配置了才能访问(如默认的80、443端口或者自定义的端口)。
相关推荐
- 「Python条件结构」if…else实现判断奇偶数
-
功能要求用户从键盘上输入一个整数,判断该数是奇数还是偶数。说明:能被2整除的整数叫偶数,不能被2整除的叫奇数;即该数除以2后余数为0时该数为偶数,否则该数为奇数。求余数运算符为“%”。实例代码num...
- Python if else条件语句详解
-
前面我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构。但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿...
- python基础篇: python中的流程控制,你都了解吗?
-
在之前的文章中大致的介绍过python中的流程控制语句,今天通过一些案例来详细了解一下python中的流程语句。目前python中流程控制语句,包含如下,如有遗漏欢迎留言补充。在python中条件判断...
- python中if语句
-
if语句用来判断,当不同的条件成立去做与之对应事情;格式如下:if条件:执行代码条件为True才会去做执行代码布尔类型(bool)说到布尔类型,就像开关只有两个值一样,布尔类型的值只有两个...
- python中的循环语句到底难不难
-
好多初学者会有一种这样的心里:循环难不难?该怎么学习?下面来给大家分析下.Python中的循环语句并不难,但需要理解其核心逻辑和应用场景。以下是针对零基础学习者的清晰解析,通过对比、示例和常见误...
- Python6大基础运算符,看完这篇之后会让你有一个彻底认识
-
昨天我们准备好了Python程序所需要的的东西,那么今天我们开始了解Python的各种基础运算符,这些要是不熟悉下来你后面的路也会走的很艰难Python支持基础运算符,常见的算术运算符有+、-、*、/...
- Python基础:条件语句和循环语句
-
下面会详细讲解一下Python关于条件语句和循环语句,会包含一些示例代码。我们首先来介绍条件语句(if-else),然后再讨论循环语句(for和while循环)。条件语句(if-else)在Pytho...
- Python合集之Python循环语句(一)
-
在上一节的合集中,我们了解了Python流程控制语句中if语句的嵌套及条件表达会的相关知识,本节我们将进一步了解一下Python循环语句中的while语句的相关知识。在日常生活中很多问题都无...
- Python“三步”即可爬取,毋庸置疑
-
声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块importreimportrequests#第二步获取你想爬取的网页地址,发送请求,获取网页内...
- 「Python条件结构」if…else实现三角形判断
-
功能要求编写程序,判断输入的三个数是否能构成三角形的三个边。如果可以,打印“可以构成三角形”;如果不可以,打印“不可以构成三角形”。构成三角形的条件是:三条边都等于0,且任何2条边的边长之和都大于第三...
- Python中检查对象是否具有某个属性的方法
-
技术背景在Python编程中,经常会遇到需要检查一个对象是否具有某个特定属性的情况。例如,在调用对象的属性之前,需要先确认该属性是否存在,以避免引发AttributeError异常。以下将介绍几种常见...
- Python条件语句:从入门到精通
-
导语条件语句是编程中的基础概念,它允许我们根据不同的条件执行不同的代码块。在Python中,条件语句的灵活性和易读性使其成为编写逻辑判断和流程控制的强大工具。本教程将带您深入了解Python条件语句的...
- 简单学Python——条件语句if
-
条件语句是用来判断给定的条件是否满足(表达式值是否为0或False),并根据判断的结果(真或假)决定执行的语句。Python条件语句用的是if或if和else、elif等搭配实现的。代码执行的过程:i...
- Python合集之Python跳转语句(一)
-
在上一节的合集中,我们了解了Python循环嵌套语句的相关知识,本节我们将进一步了解一下Python跳转语句中的break的相关知识。当循环条件一直满足时,程序会一直执行下去,如果希望在中间离开循环...
- 新手学Python避坑,学习效率狂飙! 八、Python 布尔值判断
-
布尔值判断系统知识在Python里,布尔类型仅有两个值:True和False,它们常被用于条件判断。下面从几个方面展开介绍:1.布尔运算逻辑与(and):只有当两个操作数都为True时,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)