本文目录
- 前言
- 一、前提
- 1.1 服务器
- 1.2 域名
- 二、Certbot简介
- 2.1 Apache服务器
- 2.2 Nginx服务器
- 三、自动更新证书
- 四、效果
前言
HTTPS
(全称:Hypertext Transfer Protocol Secure
),是以安全为目标的 HTTP
通道,在HTTP
的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS
在HTTP
的基础下加入SSL
,HTTPS
的安全基础是SSL
,因此加密的详细内容就需要SSL
。本文基于此将实战配置线上云服务器基于Ubuntu
申请免费自动化SSL
证书并并指导Nginx
和Apache
进行配置HTTPS
。
那么废话不多说,我们直接上手。
一、前提
1.1 服务器
首先这边是默认你已经准备好了一台线上服务器,直接终端运行命令ssh 用户名@公网ip
输入密码,连接上如下图:
如果你的服务器是首次登录,你可以运行命令sudo apt update
对服务器的一些包进行更新。
1.2 域名
你的服务器解析了域名并且域名已经完成了备案。
二、Certbot简介
CertBot是一个ACME代理, ACME协议是一个证书自动管理环境的协议。CertBot与Let’s Encrypt(LE)的关系是客户端与服务端的关系,两者通过ACME协议实现对证书的自动管理。我们可以利用Certbot自动化获取和更新Let’s Encrypt SSL证书。
因为我是Nginx服务器所以以Nginx服务器为例进行展示。
2.1 Apache服务器
运行命令:
sudo apt install certbot python3-certbot-apache
安装完之后使用命令如下获取证书:
sudo certbot --apache
安装完之后一般自动给你配置好了,你访问自己的网站https
测试即可。也可如下手动配置:
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
2.2 Nginx服务器
sudo apt install certbot python3-certbot-nginx
如果有碰到[y/n]
打入y
回车即可。
安装完之后使用命令如下获取证书:
sudo certbot --nginx
在执行上述命令时,Certbot
会引导您完成一系列设置步骤,包括输入您的电子邮件地址和同意服务条款。Certbot
还会自动配置您的Web
服务器以使用新的SSL
证书。
安装提示输入相对应字母即可。还有输入你的域名。出现如下图则成功:
安装完之后一般自动给你配置好了,你访问自己的网站https
测试即可。也可如下手动配置:
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
三、自动更新证书
Let's Encrypt
颁发的SSL
证书有效期为90天。为了确保证书始终保持有效,需要设置自动更新。Certbot
提供了一个简单的命令来实现自动续期的功能,如下命令:
sudo certbot renew --dry-run
,出现如下图,则成功。
接着运行命令sudo crontab -e
添加到服务器的cron
作业中,以确保证书定期更新。然后添加0 0 * * * /usr/bin/certbot renew --quiet
这行:
保存退出。
四、效果
可以看到已经是https
了,并且证书有效。
在学习的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。