Nginx安装免费SSL证书开启Https请求实现步骤

 更新时间:2026年04月12日 10:59:04   作者:ALITTLE_01  
本文介绍了在CentOS中使用Let's Encrypt获取免费SSL证书,并配置Nginx以支持HTTPS的过程,包括安装Nginx、Nginx SSL模块、获取Let's Encrypt证书、配置Nginx以支持HTTPS等步骤

在部分场景中,我们必须使用 https 请求,因为 https 请求更为安全,常用于支付方面的请求调用

https 的基础是 ssl,我们一般是没有 ssl 证书的,我们需要向供应商购买 ssl 证书,今天我们使用 Let’s Encrypt 获取免费证书,搭建我们的 https 请求

1、安装 Nginx

在 Centos 中搭建 nginx 环境,

可以参考我的这篇文章,Centos7中搭建Nginx环境

2、安装 ssl 模块

我们默认安装的 nginx 是没有 ssl 模块的,可以输入命令验证,进入 nginx 的目录

cd /usr/local/nginx/sbin/

执行命令

./nginx -V

注意是大写的 V,小写的 v 只会出现 nginx 的版本信息

如图所示,我是已经安装了 ssl 模块的,没有安装的可以参考如下:

  • 1> 进入到你解压 nginx 的目录,也就是带用 nginx 版本信息的那个目录
cd  /usr/local/nginx-1.8.0/

  • 2> 执行命令
./configure --prefix=/usr/local/nginx --with-http_ssl_module

配置了 ssl 模块,使用 make 命令重新编译

make

注意,不能使用 make install 命令,这样会导致重新安装 nginx,此时当前目录就会出现 objs 目录

进入 objs 目录,会看到 nginx 的可执行文件

  • 3> 替换 nginx 可执行文件

我们使用这个新的 nginx 可执行文件 替换 sbin 目录下的 nginx 可执行文件

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

系统会询问你是否覆盖,输入 y 即可,如果覆盖失败,多半是因为你的 nginx 还在启动中,先将 nginx 关闭即可

  • 4> 再次检验是否安装 ssl 模块

进入 nginx 目录

cd /usr/local/nginx/sbin/

执行命令

./nginx -V

此时就能看到 ssl 模块已经安装成功了

3、获取 ssl 证书

  • 1、Let’s Encrypt 简介

如果要启用 HTTPS,我们需要一个 CA 证书,Let’s Encrypt 是一个免费的证书颁发机构,由 ISRG(Internet Security Research Group)运作。

  • 2、使用 Certbot 获取证书

Certbot 是 Let’s Encrypt 官方推荐的证书获取工具,它可以帮助用户很方便的获取和更新 Let’s Encrypt 证书,Certbot 支持所有 Unix 内核的操作系统。

  • 3、安装 Certbot 客户端

执行命令

yum install -y epel-release
yum install -y certbot
  • 4、获取证书

因为使用 Certbot 获取证书时,Let’s Encrypt 服务器会访问 http://sub.domain.com/.well-known 来验证你的域名服务器,因此你需要修改 nginx 配置文件,配置 .well-known 指向本地一个目录

location /.well-known {
    alias /usr/local/nginx/html/.well-known;
}

  • 5、使用 certbot 命令获取 ssl 证书,执行命令
certbot certonly --webroot -w /usr/local/nginx/html/ -d xxx.com -m xxxxxx@xxx.com --agree-tos
  • -w,指定 webroot 目录
  • -d,指定想要获取证书的域名,支持多个域名
  • -m,输入你的邮箱地址

如果获取成功,你的密钥和证书存放在 /etc/letsencrypt/live/xxx.com/ 目录下

错误解决:

1、ImportError: cannot import name UnrewindableBodyError

解决办法,重装 urllib3 库,执行命令

pip uninstall urllib3

卸载 urllib3 库

pip install urllib3

安装 urllib3 库

2、pkg_resources.DistributionNotFound: The ‘urllib3<1.23,>=1.21.1’ distribution was not found and is required by requests

执行命令

easy_install urllib3==1.21.1

3、ImportError: ‘pyOpenSSL’ module missing required functionality. Try upgradin

执行命令

pip install --upgrade --force-reinstall 'requests==2.6.0'

以上就是我遇到的三个问题,期间会有询问的地方,输入 y 即可

以上错误解决完后,再次输入命令获取 ssl 证书

certbot certonly --webroot -w /usr/local/nginx/html/ -d xxx.com -m xxxxxx@xxx.com --agree-tos

没错误,就能够在 /etc/letsencrypt/live/xxx.com/ 目录下看到你的 ssl 证书了

注意:

该证书 90 天有效,到期需要重新申请,你也可以通过定时任务来定时更新 ssl 证书

4、配置 nginx HTTPS server

编辑 nginx 的配置文件

cd /usr/local/nginx/conf/

编辑 nginx.conf 文件

vim nginx.conf

在 server {} 后面加入以下内容

# HTTPS server
server {
	# 监听端口,默认443
	listen 443 ssl;
	# 你的域名
	server_name xxx.com;

	# 你证书的位置
	ssl_certificate      /etc/letsencrypt/live/xxx.com/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/xxx.com/privkey.pem;

	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;                   
	}
}

5、访问测试

重启 nginx,进入 sbin 目录

cd /usr/local/nginx/sbin

输入命令

./nginx -s reload

浏览器访问

https://xxx.com

表示,我们的 ssl 证书生效,https 配置成功

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx服务器中配置GeoIP模块来拦截指定国家IP

    Nginx服务器中配置GeoIP模块来拦截指定国家IP

    Nginx中自带GeoIP模块可以屏蔽指定IP的请求,只不过默认没有被编译,打开以后我们只要再下载一个IP规则就行,Nginx服务器中配置GeoIP模块来拦截指定国家IP
    2016-06-06
  • 详解nginx服务器绑定域名和设置根目录的方法

    详解nginx服务器绑定域名和设置根目录的方法

    这篇文章主要介绍了详解nginx服务器绑定域名和设置根目录的方法,nginx服务器绑定域名以及设置根目录非常方便,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Fastdfs与nginx进行压缩图片比率

    Fastdfs与nginx进行压缩图片比率

    前阵子,工作搞了一下Fastdfs与nginx进行压缩图片比率存储在服务器中,今天应用下工作时间记录下.
    2014-07-07
  • Nginx中nginx.conf配置结构示例详解

    Nginx中nginx.conf配置结构示例详解

    Nginx 是一款高性能的 Web 服务器和反向代理服务器,其灵活的配置语法和模块化设计使其成为现代 Web 架构的核心组件,这篇文章主要介绍了Nginx中nginx.conf配置结构的相关资料,需要的朋友可以参考下
    2025-09-09
  • 网站如何通过nginx设置黑/白名单IP限制及国家城市IP访问限制

    网站如何通过nginx设置黑/白名单IP限制及国家城市IP访问限制

    如果你的服务器被攻击很厉害,而且服务器是自己练手的,不需要其他用户访问的,那么就可以配置一下nginx的白名单,下面这篇文章主要给大家介绍了关于网站如何通过nginx设置黑/白名单IP限制及国家城市IP访问限制的相关资料,需要的朋友可以参考下
    2022-07-07
  • Nginx日志分割实战

    Nginx日志分割实战

    Nginx默认没有提供对日志文件的分割功能,本文主要介绍了Nginx日志分割实战,分割Nginx日志的方法有很多,这里推荐利用Logrotate来完成,感兴趣的可以了解一下
    2024-03-03
  • nginx的master进程和worker进程用法解读

    nginx的master进程和worker进程用法解读

    Nginx启动后包含master和worker进程,master负责管理worker及读取配置,worker处理请求,通过worker_processes设置worker数量(通常不超过CPU核心数)或auto自动检测,结合worker_cpu_affinity绑定CPU核心以优化性能
    2025-07-07
  • Nginx之location匹配和Rewrite重写跳转方式

    Nginx之location匹配和Rewrite重写跳转方式

    这篇文章主要介绍了Nginx之location匹配和Rewrite重写跳转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • nginx+keepalived双主模式双主热备方式

    nginx+keepalived双主模式双主热备方式

    本文详细介绍了双主模式下Nginx和Keepalived的配置和测试,双主模式解决了单主备模式中资源利用率低的问题,通过两个虚拟IP和两个VRRP实例实现互相备份,配置文件包括nginx和keepalived的配置,以及检测脚本,测试部分验证了VIP的漂移和Nginx服务的自动恢复
    2026-01-01
  • Nginx 403 forbidden错误的五种原因及详细解决方法

    Nginx 403 forbidden错误的五种原因及详细解决方法

    这篇文章主要给大家介绍了关于Nginx 403 forbidden错误的五种原因及详细解决方法,相信很多人对403 forbidden是什么意思有了大致的了解,那么当我们遇到403 forbidden怎么解决呢,需要的朋友可以参考下
    2023-08-08

最新评论