阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux 下 Nginx 安装部署 Let’s Encrypt 证书实现 HTTPS

639次阅读
没有评论

共计 5068 个字符,预计需要花费 13 分钟才能阅读完成。

网站转成 https 是大势所趋。但是在国内,推进的过程显然要比国外慢很多。现阶段如果将自己的网站改成 https 以后,会碰到这样的尴尬现象:如果在页面上引用了 http:// 的链接或者图片,用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。

对于 api 接口类的网站,就不存在混合的问题,所以首先应该从 api 后台接口部分开始用 https。(ios 已经强制要求接口地址必须为 https 了)

大牌提供商的 SSL 证书可不便宜,对于大公司也许不算什么,但是对于小公司及个人来说贵了。现在国外出现的免费 SSL 服务商 Let’s Encrypt,绝对是小公司或者开发者的福音。

这里整理了在 CentOS7 + nginx 安装和使用 Let’s Encrypt 的完整过程。

官方网站:https://letsencrypt.org/

申请 let’s encript 证书可以有三种方式:

1、通过 certbot 脚本
2、通过支持 Letencript 的虚拟主机提供商
3、手工申请 manual mode

没有特殊情况,首选采用 certbot 脚本方式。

由于 letsencrypt 证书的有效期只有 90 天,需要长期使用的话,需要在失效前进行延长申请。用 certbot 脚本工具,可以将延期申请的脚本写到定时任务来自动完成,非常方便。

 一、前提条件
1. 拥有一个域名,例如 mydomain.com (在国内主机的用的话,还需要通过 ICP 备案)
2. 在域名服务器创建一条 A 记录,指向云主机的公网 IP 地址。例如 demo.mydomain.com 指向 xxx.xxx.xxx.xxx 的 IP 地址
3. 要等到新创建的域名解析能在公网上被解析到。
4. 据说国内的域名提供商对 letsencrypt 的支持非常差,但是经过试验,至少现阶段用 dnspod 解析的域名还没碰到问题。

一、前提条件

1. 拥有一个域名,例如 mydomain.com (在国内主机的用的话,还需要通过 ICP 备案)

2. 在域名服务器创建一条 A 记录,指向云主机的公网 IP 地址。例如 demo.mydomain.com 指向 xxx.xxx.xxx.xxx 的 IP 地址

3. 要等到新创建的域名解析能在公网上被解析到。

4. 据说国内的域名提供商对 letsencrypt 的支持非常差,但是经过试验,至少现阶段用 dnspod 解析的域名还没碰到问题。

二、在云主机上安装 nginx 服务器,配置好最基本的 80 口 ngnix 站点

例如,假设为 demo.mydomain.com 快速配置一个最简单的 nginx 站点

1. 安装 nginx 服务器

二、在云主机上安装 nginx 服务器,配置好最基本的 80 口 ngnix 站点

例如,假设为 demo.mydomain.com 快速配置一个最简单的 nginx 站点

1. 安装 nginx 服务器

yum install -y nginx

2. 配置一个 nginx 站点

mkdir /opt/www/demo.mydomain.com -p

chown nginx:nginx /opt/www/demo.mydomain.com/ -R

vi /etc/nginx/conf.d/demo.mydomain.com.conf

将以下内容复制到该文件中

server {
listen 80;
server_name demo.mydomain.com;
charset utf-8;
root /opt/www/demo.mydomain.com;
index index.html index.htm;
access_log  /var/log/nginx/demo.mydomain.com_access.log;
error_log  /var/log/nginx/demo.mydomain.com_error.log;
}

3. 启动 nginx 服务

systemctl start nginx

注意:要确认 CentOS 服务器开放 80 口及 443 端口

4. 在浏览器上确认访问到 http://demo.mydomain.com 如果没有页面的话,正常情况下应该会显示 403 错误。nginx 站点配置完成。

三、安装 certbot 工具

yum install -y epel-release

yum install -y certbot

四、使用 certbot 命令初次申请证书

# 使用方法:certbot certonly –webroot -w [Web 站点目录] -d [站点域名] -m [联系人 email 地址] –agree-tos certbot certonly –webroot -w /opt/www/demo.mydomain.com -d demo.mydomain.com -m myname@gmail.com –agree-tos

注意:联系人 email 地址要填写真实有效的,letsencrypt 会在证书在过期以前发送预告的通知邮件。申请成功后,会显示以下 Congratulations 信息

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/[xxx.xxx.xxx]/fullchain.pem. Your cert will
expire on 2017-03-20. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run “certbot
renew”
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt:  https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

证书的保存位置在:

/etc/letsencrypt/live/demo.mydomain.com/
用户证书 cert.pem -> ../../archive/demo.mydomain.com/cert1.pem 中间证书 chain.pem -> ../../archive/demo.mydomain.com/chain1.pem 证书链, chain.pem + cert.pemfullchain.pem -> ../../archive/demo.mydomain.com/fullchain1.pem 证书私钥 privkey.pem -> ../../archive/demo.mydomain.com/privkey1.pem

五、查看证书有效期的命令

openssl x509 -noout -dates -in /etc/letsencrypt/live/[demo.mydomain.com]/cert.pem

显示的是格林威治时间,不知道怎么才能显示当前时区。

六、设置定时任务自动更新证书

letsencrypt 证书的有效期是 90 天,但是可以用脚本去更新。

# 更新证书

certbot renew –dry-run

# 如果不需要返回的信息,可以用静默方式

certbot renew –quiet

注意:更新证书时候网站必须是能访问到的

# 可以使用 crontab 定时更新,例如:
# 每月 1 号 5 时执行执行一次更新,并重启 nginx 服务器
00 05 01 * * /usr/bin/certbot renew –quiet && /bin/systemctl restart nginx

七、应用实例:配置 nginx 使用证书开通 https 站点

1. 生成 Perfect Forward Security(PFS)键值

mkdir /etc/ssl/private/ -p

cd /etc/ssl/private/

openssl dhparam 2048 -out dhparam.pem

1.Perfect Forward Security(PFS) 是个什么东西,中文翻译成完美前向保密,一两句话也说不清楚,反正是这几年才提倡的加强安全性的技术。如果本地还没有生成这个键值,需要先执行生成的命令。

2. 生成的过程还挺花时间的,喝杯咖啡歇会儿吧。

2. 配置 nginx 站点,例如 /etc/nginx/conf.d/demo.mydomain.com.conf,样例内容如下:

server {
 
listen 80;
 
server_name demo.mydomain.com;
 
rewrite ^ https://$server_name$request_uri? permanent;
 
}
 
server {
 
listen 443 ssl;
 
server_name demo.mydomain.com;
 
charset utf-8;
 
root /opt/www/demo.mydomain.com;
 
index index.html index.htm;
 
access_log /var/log/nginx/demo.mydomain.com_access.log;
 
error_log /var/log/nginx/demo.mydomain.com_error.log;
 
# letsencrypt 生成的文件
 
ssl_certificate /etc/letsencrypt/live/demo.mydomain.com/fullchain.pem;
 
ssl_certificate_key /etc/letsencrypt/live/demo.mydomain.com/privkey.pem;
 
ssl_session_timeout 1d;
 
ssl_session_cache shared:SSL:50m;
 
ssl_session_tickets on;
 
ssl_dhparam /etc/ssl/private/dhparam.pem;
 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
# 一般推荐使用的 ssl_ciphers 值: https://wiki.mozilla.org/Security/Server_Side_TLS
 
ssl_ciphers ‘ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK’;
 
ssl_prefer_server_ciphers on;
 
}

3. 在浏览器打开 http://demo.mydomain.com, 如果正常跳转到 https://demo.mydomain.com,就算成功了。如果是 chrome 浏览器,在地址栏点击小锁的图标,可以查看证书的详情。

Linux 下 Nginx 安装部署 Let's Encrypt 证书实现 HTTPS

Let’s Encrypt Root 得到所有主要机构的信任  https://www.linuxidc.com/Linux/2018-08/153409.htm

搭配 Let’s Encrypt 半自动化为 Nginx 配置 https  http://www.linuxidc.com/Linux/2016-01/127879.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5068字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994530
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...