网站首页 > 技术教程 正文
以Ubuntu 系统和 Nginx 为例讲解如何在服务器上部署 Let's Encrypt 证书。
第一步:安装客户端
在终端执行如下指令。
sudo apt-get install letsencrypt
Let's Encrypt 客户端名称可能是 letsencrypt 或 certbot. 请用 which 指令看看你属于哪一种情形。后文将统一使用 letsencrypt 指令,如有需要请自行替换成 certbot.
第二步:获取证书
假设你已经获取了 example.com 的域名,并且其 DNS A Record (不能是CNAME) 指向了当前服务器的 IP 地址。Let's Encrypt 客户端会通过查询 DNS 信息验证服务器的身份。在这里,我推荐使用独立模式(standalone)获取和更新证书。
由于客户端要使用 80 或 443 端口,请首先关闭占用此端口的程序。通常停止 Nginx 即可。
sudo service nginx stop
然后在终端输入下面的指令获取证书。
sudo letsencrypt certonly --standalone
接下来会出现一个文字图形界面。先输入电子邮件地址。
最后输入服务器的域名。在具有 DNS 记录的前提下,你还可以加上任何你想要的二级域名。稍等片刻,客户端就会完成身份验证。证书与相关信息存放在 /etc/letsencrypt文件夹下。请将它备份至一个安全的地方。
第三步:配置 Nginx
如果你已经配置好了 HTTP 服务,/etc/nginx/nginx.conf 文件中应该有类似下面的片段。
http { server { listen 80; listen [::]:80; server_name example.com www.example.com; location / { root /var/www/html; } ... } ... }
你需要再加上一个 server 条目用于 HTTPS 服务。改完之后的结果是这个样子。
http { server { listen 80; listen [::]:80; server_name example.com www.example.com; location / { root /var/www/html; } ... } server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/cert.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { root /var/www/html; } ... } ... }
记得把所有 example.com 替换成你自己的域名。
保存配置文件,启动 Nginx.
sudo service nginx start
恭喜你已经成功部署了 Let's Encrypt 证书!
证书的更新
Let's Encrypt 证书有效期为三个月,你需要在证书到期之前续约。官方会在证书到期前向你发送邮件,因此不必担心错过日期。你可以运用 cron 实现证书的自动更新,不过手动操作已经足够简单了。
# 先停止 Nginx, 释放端口 sudo service nginx stop # 更新证书 sudo letsencrypt certonly --standalone # 启动 Nginx sudo service nginx start
进阶:HTTPS 跳转
现在,你的服务器同时接受 HTTP 和 HTTPS 请求。如果你希望只受理 HTTPS 请求,可以在 nginx.conf 中添加一个 301 跳转规则,告知浏览器将 HTTP 变成 HTTPS.
http {
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
root /var/www/html;
}
...
}
...
}
问题与解答
在证书获取与更新时,为何使用 standalone 而不是 webroot 模式?
Let's Encrypt 提供了多种身份验证方式。与 standalone 相比,webroot 模式最大的优势在于没有宕机时间。然而 webroot 存在一些隐含的问题,它们是新手不易解决的。例如,webroot 需要在 nginx.conf 中添加特殊的规则以允许外界访问,但即便如此,该路径依旧被部分防火墙封杀。此外,启用了 301 跳转的服务器无法直接使用 webroot 更新证书,这期间需要反复修改配置文件,比 standalone 模式更为繁琐。十几秒的宕机时间对一般的网站来说可以忽略不计,因此我建议新手优先使用 standalone 模式。
如何发现占用某个端口的进程?
下面的指令可以列出占用每个 TCP 端口的进程。
sudo netstat -ntlp
找到进程号之后可以用 kill -9 强制关闭程序。
如何使用文字图形界面?
文字图形界面的操作非常简单。tab 键用于切换光标所在区域,space 键勾选或取消选项,enter 键确定,ctrl-c(强制)退出。
server{ listen 80; server_name xcx.xlelou.cc; return 301 https://xcx.xlelou.cc$request_uri; location / { } } ### redirects http requests to https ### the https server server { # listen on ssl, deliver with speedy if possible listen 443 ssl spdy; server_name xcx.xlelou.cc; # change these paths! ssl_certificate /etc/letsencrypt/live/xcx.xlelou.cc/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xcx.xlelou.cc/privkey.pem; # enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # disables all weak ciphers ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4"; ssl_prefer_server_ciphers on; location / { alias /home/xcx/ ; } }
猜你喜欢
- 2024-10-11 从零开始搭建HTTPS服务(20台机小型网吧搭建无盘系统教程从零开始)
- 2024-10-11 LNMP环境(nginx)安装SSL安全证书,全站开启HTTPS访问
- 2024-10-11 https免费证书获取(免费https证书地址栏显示不安全)
- 2024-10-11 如何在HAProxy LOAD_BALANCER上设置SSL-HTTPS?
- 2024-10-11 用Https方式访问Harbor-1.9版本(直接访问https://www.muoujiejie.com)
- 2024-10-11 支付宝、微信、QQ 收款二维码三合一
- 2024-09-21 Nginx鉴权,验证token(nginx 验证用户凭据)
- 2024-09-21 使用cert-manager实现Ingress https--详解
- 2024-09-21 一个命令,让你的网站支持https(这是一个命令,斯塔纳的进攻是个命令德语怎么说)
- 2024-09-21 nginx反向代理 https内部定向到http报302问题解决方案,「亲测」
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)