Nginx 配置 SSL 证书(https)


根据我们日常的使用, nginx 配置 ssl 证书,有两个场景:

1、局域网 nginx 服务配置 ssl 证书,并只在局域网进行 https 访问(如 iOS 局域网做托管服务就需要这样的配置)

2、云服务 nginx 服务配置 ssl 证书

以上两个场景的 https 的配置过程其实差不多。这里配置的 ssl 证书是从阿里云申请的 DV 免费证书,是正规 CA 机构颁发的,配置后可以直接访问。

局域网 nginx 服务配置 ssl 证书

这里使用的是阿里云的 DV 免费证书,如何申请 DV 免费证书,在最后一步简单说明,或自行百度

1、下载 ssl 证书将其放到服务器某个目录下

下载 DV 证书后有两个文件:<证书id>_<域名>.pem  和 <证书id>_<域名>.key 将这两个文件放到提供 nginx 服务的机器中的某个目录下,如:

/etc/ssl

2、配置 nginx.conf 文件

(我自己的 Mac 机器上安装的 nginx)nginx.conf 文件位置根据自己安装的 nginx 而定,一般是在 /etc/nginx/ 路径,如果找不到自行百度一下。打开 nginx.conf 文件,在 http 模块 中添加 一个 server, 默认情况下 nginx 已经写有两个 server 模块了,一个是80端口的 http 协议,一个是443 端口的 https 协议

Nginx 配置 SSL 证书(https)

将上面这个配置 https 协议的 server 模块的注释去掉,配置如下四个字段:

server_name : 配置 ssl 绑定的域名

ssl_certificate : 配置上一步下载的 ssl 文件中的 pem 文件

ssl_certificate_key : 配置上一步下载的 ssl 文件中的 key文件

root : 和 http 协议一样,该怎么配置怎么配置

Nginx 配置 SSL 证书(https)

配置保存后,校验配置是否通过,通过后对配置进行重载

nginx -t
nginx -s reload
3、域名添加 A 记录解析到 nginx 服务的 IP 地址

以上两步完成之后,可以在局域网内通过 hosts 文件添加 域名-IP 映射关系, 然后就可以通过浏览器输入: https://<域名> 进行访问检查是否配置成功。如果不成功返回前两步进行检查。验证成功后,你会发现换一台局域网内的机器访问 https://<域名> 会访问失败,如果在新的这台局域网机器的 hosts 文件上添加一下 域名-IP 映射关系就可以访问成功了。这是不是很麻烦,而且做这个局域网的访问本来是为了方便局域网的需求,所以得解决这个问题。

解决这个问题很简单:

在域名管理那边添加一条 A 记录的,记录值写提供 nginx 服务的那台机器的固定的 IP 即可

云服务 nginx 服务配置 ssl 证书
1、云服务配置 ssl 需要在安全组中放行443端口,否则是无法通过443端口进行访问的
firewall-cmd --zone=public --query-port=443/tcp
Nginx 配置 SSL 证书(https)

提示 FirewallD is not running 说明防火墙没有启动

或直接检查防火墙是否开启

firewall-cmd --state
Nginx 配置 SSL 证书(https)

如果显示 not running  说明防火墙未启动

2、启动防火墙
systemctl start firewalld
Nginx 配置 SSL 证书(https)

然后再通过上面的查询防护墙 开启状态的命令查看防火墙状态,显示 running 表示已经开启防火墙。然后再检查443端口是否放行

Nginx 配置 SSL 证书(https)

显示 no 表示未放行443 端口,显示 yes 表示放行 443 端口

3、如果未放行 443 端口 则需要将 443 端口添加放行
firewall-cmd --zone=public --add-port=443/tcp --permanent
Nginx 配置 SSL 证书(https)
4、因为修改了配置,所以需要重新加载防火墙配置
firewall-cmd --reload
Nginx 配置 SSL 证书(https)

上面已经将防火墙的443端口放开,如果还是不行,那得检查一下云服务器上的安全组规则,默认是没有配置的,需要在云服务器的安全组中添加443入规则

5、云服务器安全组配置443端口准入规则(阿里云)
Nginx 配置 SSL 证书(https)

点击”手动添加”, 添加443端口

Nginx 配置 SSL 证书(https)

如果服务器的防火墙没有开启,其实只需要在云服务器安全组那边放开443端口即可通过 ssl 配置进行访问了。

6、上面配置搞定了之后,接下来就是配置 ssl 了,主要是将 nginx.conf 配置文件中的 https 模块的 server 配置上即可
Nginx 配置 SSL 证书(https)

配置保存后对其进行校验,校验通过后对配置进行重载

nginx -t
nginx -s reload
7、域名解析添加 A 记录,记录值为服务器公网 ip

这一步只是提一嘴,当你已经走到配置 ssl 证书时,说明 http 的访问基本上已经没问题了,即已经配置过 域名与服务器公网 ip 的解析记录了。

在阿里云申请免费的 DV 证书(需要有域名才能申请)

先进行购买,购买是免费的,购买后申请证书,填写绑定的域名以及用户信息, 域名验证方式选择手动、 算法选RSA、使用默认的系统生成

Nginx 配置 SSL 证书(https)
Nginx 配置 SSL 证书(https)
Nginx 配置 SSL 证书(https)

申请证书后就需要验证域名所有权。

根据阿里云的提示,在绑定域名中添加 TXT 解析记录即可

Nginx 配置 SSL 证书(https)

验证通过后等几分钟 CA 机构就能通过申请,然后就可以下载证书进行部署了。这里配置的是 nginx 服务,所以下载时选择 nginx 服务类型的证书

Nginx 配置 SSL 证书(https)


原文始发于微信公众号(三万之一):Nginx 配置 SSL 证书(https)

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/231247.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!