百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

如何在nginx下配置ssl证书实现https访问,小白都会【超详细】

off999 2025-01-18 23:08 18 浏览 0 评论

为什么要配置https?

在互联网时代,信息泄露会给工作和生活带来很大的困扰,会源源不断的收到垃圾短信和各种推销电话和诈骗电话的骚扰。隐私泄露后可能会 让不法分子钻空子来获取你的信任从而使人更容易上当受骗。对于企业网站来说,不能保护好用户的隐私信息可能会面临行政罚款,同时还会损害企业的形象和声誉。

因此,企业网站应提前采取保护网络安全措施,防患于未然,而为网站部署SSL证书实现https加密是保护网络安全的基础。

尤其是微信开发、APP开发等都是强制的,SSL证书除了可以加快搜索引擎收录以外,还确保客户端与站点传输数据的加密作用,所有操作系统都可以部署。

http与https的区别

https相比http多了个s,这个“s”指的是secure(可翻译为安全的、可靠的),即http + 加密 + 认证 + 完整性保护 = https,其实就是多了ssl协议这层外壳的http,这就是它们最大的区别(如下图)。还有以下几点主要的区别:

  1. https协议需要申请CA证书,一般免费证书较少,因而需要一定费用。
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. 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 pip 命令 参数(python pip命令用不了)

usage:python[option]...[-ccmd|-mmod|file|-][arg]...Options(andcorrespondingenvironm...

Python 包管理:uv 来了!比 pip 快 100 倍的神器,开发者的终极选择?

为什么Python开发者需要uv?Python生态虽繁荣,但包管理一直是痛点:pip安装慢如蜗牛、依赖冲突让人头秃、虚拟环境配置繁琐……直到uv横空出世!这个用Rust语言打造的...

UV:Python包管理的未来已来!比pip快100倍的新选择

引言Python开发者们,是否厌倦了pip的缓慢安装速度?是否希望有一个更快、更现代、更高效的包管理工具?今天,我要向大家介绍一个革命性的Python包管理工具——UV!UV由Rust编写,是pip和...

「Python」 常用的pip命令和Django命令

pip命令如何根据关键词找到PyPI(Python包仓库)上的可用包#方法1:直接访问PyPI官网,输入关键词搜索#方法2#为何不用pipsearchdjango?因为这个命令已不可...

python包管理工具pip freeze详解(python工具包怎么用)

freeze就像其名字表示的意思一样,主要用来以requirement的格式输出已安装的包,这里我们主要讨论以下3个选项:--local、--user、--pathlocal--local选项一般用在...

python包管理工具pip config详解(python的pulp包)

pipconfig主要包含以下子命令:set、get、edit、list、debug、unset。下面我们逐一介绍下它们。pipconfigset这个命令允许我们以name=value的形式配...

pip常用命令,学Python不会这个寸步难行哦(26)

小朋友们好,大朋友们好!我是猫妹,一名爱上Python编程的小学生。欢迎和猫妹一起,趣味学Python。今日主题学习下pip的使用。pip什么是pippip全称PythonPackageIndex...

Python pip 包管理需知(python的包管理)

简介在Python编程中,pip是一个强大且广泛使用的包管理工具。它使我们能够方便地安装、升级和管理Python包。无论是使用第三方库还是分享自己的代码,pip都是我们的得力助手。本文将深入解析pip...

比pip快100倍的Python包安装工具(python如何用pip安装包)

简介uv是一款开源的Python包安装工具,GitHubstar高达56k,以性能极快著称,具有以下特性(官方英文原文):Asingletooltoreplacepip,pip-tool...

Python安装包总报错?这篇解决指南让你告别pip烦恼!

在Python开发中,pip是安装和管理第三方包的必备工具,但你是否经常遇到各种报错,比如无法创建进程、权限不足、版本冲突,甚至SSL证书错误?这些问题不仅浪费时间,还让人抓狂!别担心!本文整理了...

pip vs pipx: Python 包管理器,你选择哪个?

高效的包管理对于Python开发至关重要。pip和pipx是两个最常用的工具。虽然两者都支持安装Python包,但它们的设计和用例却大相径庭。本文将探讨这些差异,解释何时使用每种工具,并...

【python】5分钟掌握pip(包管理)操作

安装一个软件包从庞大的仓库中找到一个库,将其导入您的环境:pipinstallnumpy2.已安装软件包列表调查您领域内存在的库的概要,注意它们的版本:piplist3.升级软件包赋予已安装...

Python pip安装与使用步骤(python的pip安装方法)

安装和使用Python的包管理工具pip是管理Python包和依赖项的基础技能。以下是详细的步骤:安装pip使用系统包管理器安装Windows:通常,安装Python时会自动安装p...

Python自动化办公应用学习笔记3—— pip工具安装

3.1pip工具安装最常用且最高效的Python第三方库安装方式是采用pip工具安装。pip是Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。pip是Python官方提...

Python文件压缩神器:ZipFile功能全解析,支持一键压缩和解压

在Python中处理ZIP文件时,zipfile模块是最常用的工具。它提供了创建、读取、修改ZIP文件的完整功能,无需依赖外部命令。本文将通过核心函数、实战案例和避坑指南,带你掌握这个高效的文件处理模...

取消回复欢迎 发表评论: