如何在Ubuntu 18.04 Nginx配置Let's Encrypt SSL证书

Web进行安全通信依赖于HTTPS,这需要使用数字证书,以便浏览器验证Web服务器的身份,比如说,google.com是真的吗

5 min read
By myfreax
如何在Ubuntu 18.04 Nginx配置Let's Encrypt SSL证书
Ubuntu 18.04 Nginx配置Let's Encrypt SSL证书

Web进行安全通信依赖于HTTPS,这需要使用数字证书,以便浏览器验证Web服务器的身份,比如说,google.com是真的吗?

Web服务器从证书颁发机构,通常是CA可信第三方。获取其证书以验证域名真实性,从而构建一个可信,安全的连接。

Certbot是一个易于使用的客户端,它由EFF,Mozilla和开源组织发起。可以从Let's Encrypt获取证书,一个开放的证书颁发机构,并将其部署到Web服务器。

在本教程中我们将说明如何在Ubuntu 20.04配置Nginx Let's Encrypt SSL证书。包括使用使用Certbot配置Let's Encrypt SSL证书。使用Certbot自动更新SSL证书。

在继续之前,请确保您已满足这些要求。确保你以root或者具有sudo权限的用户登录到服务器。

需要有线上服务器,可以是vps等独立主机。一个可指向你服务器的域名,比如在这个示例将使用www.myfreax.com。

可通过域名的方式访问你的HTTP服务器。如果你还没有安装HTTP服务器,可以阅读教程在ubuntu安装Nginx服务器。

登录到服务器后整个过程都是root的操作,建议谨慎使用rm命令,在终端ssh myfreax@your-remote-server-ip命令登录到服务器。

命令将会要求你输入myfreax用户的密码,才能登录到web服务器,myfreax@your-remote-server-ip's password:。

如果你已设置密钥登录则不需要输入密码即可登录。如果你或者服务器提供商已更改SSH的默认端口22为其它端口请使用-p选项指定端口,

例如改成23333端口,则在终端运行命令ssh -p '23333' myfreax@your-remote-server-ip登录服务器。

安装Snap

如何在ubuntu 18.04安装snap | myfreax
Snap Store是一个图形桌面应用程序,Snap Store通过有用的描述、评级、评论和屏幕截图展示特色和流行的Linux应用程序
ubuntu 18.04 安装snap

安装CertBot

在Ubuntu官方的默认镜像中并不包含Certbot的软件包,我们将通过snap包管理器安装Certbot中,首先在终端运行sudo snap refresh core命令更新snap的core。

然后运行命令sudo snap install --classic certbot安装CertBot。当安装Certbot完成后。

你需要运行ln命令创建符号链接,将certbot加入PATH环境变量中,这样你就可以不需要写绝对路径运行certbot命令。

certbot的自动更新SSL证书脚本也将会PATH环境变量搜索certbot可执行文件,因此将certbot加入PATH环境变量中是必须的。

sudo snap install core
sudo snap refresh core

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

配置SSL证书

配置SSL证书非常简单,运行sudo certbot --nginx -d www.myfreax.com命令获取证书并让Certbot自动编辑您的Nginx配置,只需一步就可以启用HTTPS SSL的证书。

如果你使用的Apache作为HTTP的服务,请运行sudo certbot  --apache -d www.myfreax.com命令。

Certbot也将会自动编辑你的Apache配置,以启用HTTPS SSL证书。

如果是首次运行CertBot获取SSL证书,它将会询问你的电子邮件,输入一个你常用的邮件地址,它会在到期之前通知你。

同意CertBot协议,是否将HTTP重定向到HTTPS,CertBot获取证书输出内容如下所示。

sudo certbot --nginx -d www.myfreax.com
sudo certbot  --apache -d www.myfreax.com
...
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 输入你的电子邮件
....
(A)gree/(C)ancel: a 同意协议
....
(Y)es/(N)o: y 询问是否需要接收提醒邮件
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 询问是否要重定向http的连接,选择2重定向
Congratulations! You have successfully enabled https://www.myfreax.com

使用Certbot自动更新SSL证书

Let's Encrypt的SSL证书会在3个月到期即90天,因此你可能需要手动续订,但Certbot软件包附带了一个cron任务和systemd计时器,它将在证书过期之前进行自动续订。

以简化我们的工作。 除非你更改配置,否则无需再次手动运行Certbot。您可以通过运行命令sudo certbot renew --dry-run来测试证书的自动续订。

要确认您的网站设置正确,请在浏览器中访问https://www.myfreax.com/,然后在网址栏中查找到锁图标。至此,你已了解如何为自己域名添加HTTPS SSL证书。

结论

至此,你已经会使用Certbot为自己的HTTP服务器部署Let's Encrypt SSL证书。如需要学习更多Certbot相关知识,请参考官方文档。如你有任何疑问,请在下面发表评论。