当前位置: 代码网 > 服务器>网络>SSL > Nginx安装免费SSL证书开启Https请求实现步骤

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

2026年04月12日 SSL 我要评论
在部分场景中,我们必须使用 https 请求,因为 https 请求更为安全,常用于支付方面的请求调用https 的基础是 ssl,我们一般是没有 ssl 证书的,我们需要向供应商购买 ssl 证书,

在部分场景中,我们必须使用 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 配置成功

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com