【Web】X-DOC:创建Web必须知识之SSL证书
1、什么是SSL证书?
(SSL Certificates)是HTTP明文协议升级HTTPS加密协议必备的数字证书。它在客户端(浏览器)与服务端(网站服务器)之间搭建一条安全的加密通道,对两者之间交换的信息进行加密,确保传输数据不被泄露或篡改。
网站部署全球信任的SSL证书,浏览器将直观展示网站认证信息和安全标识,访问地址由”Http”明文访问,变成了”Https“加密访问,显示醒目安全锁,点击安全锁,可查看网站认证的详细信息;使用最高级别EV SSL证书,浏览器显示绿色地址栏,单位名称直接在地址栏上显示。
支持用主域名/子域名/公网IP地址申请SSL证书。
2、SSL证书有哪些类型?
SSL证书是一种用于加密和验证网站身份的数字证书。根据其用途和验证级别的不同,SSL证书可以分为以下几种类型:
- 域名验证证书(DV证书):这是最常见的SSL证书类型,用于验证网站的域名是否有效。它只需要验证域名的所有权,通常在几分钟内就可以颁发。
- 组织验证证书(OV证书):这种证书不仅验证域名的所有权,还验证了网站背后的组织或企业的合法性。颁发这种证书需要进行更严格的验证过程,通常需要几天的时间。
- 增强验证证书(EV证书):EV证书提供了最高级别的验证和信任。它不仅验证域名和组织的合法性,还要求进行更详细的验证,包括组织的法律地位和身份验证。EV证书会在浏览器地址栏中显示绿色的公司名称,增加了用户对网站的信任。
3、SSL证书管理服务中,单域名、多域名、泛域名的区别是什么?
SSL证书管理服务支持的“域名类型”有“单域名”、“多域名”和“泛域名”3种类型。
- 单域名ssl:仅支持绑定1个普通域名,如 xlevon.cn 。
- 多域名ssl:支持绑定指定数量的多个普通域名,可以是同一级别的,也可以是不同级别的,如3域名,可以支持如 xlevon.cn,abc.xlevon.cn,linux.study.xlevon.com 。
- 泛域名ssl:支持绑定带有一个通配符““且以“.”开头的同级域名,如 *.xlevon.cn,该泛域名包含 xlevon.cn 。
如果仅为个人用途,作为域名验证,可以申请泛域名ssl,能够支持主域名和任意多个二级域名,可以省去重复申请的麻烦。
4、Ubuntu通过certbot手动配置Let’s Encrypt SSL泛型域名证书
Ubuntu通过certbot手动配置Let’s Encrypt SSL泛型域名证书
4.1、安装Snap
使用命令安装snap,以及core组件
sudoaptinstall snapd
sudo snap install core
sudo snap refresh core
4.2、移除旧有的certbot
sudoapt-get remove certbot
4.3、安装certbot
sudo snap install --classic certbot
创建软链接,确保certbot命令能够在环境中找到:
sudoln -s /snap/bin/certbot /usr/bin/certbot
4.4、使用certbot申请泛型域名证书
sudo certbot certonly \
--manual \
--preferred-challenges=dns \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos \
-m 4**[email protected] \
-d *.xlevon.cn
然后它会生成一串随机字符,要求在域名管理页面将随机字符加入到_acme-challenge.xlevon.cn的DNS TXT解析中
在添加完毕之后,可以通过检查https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.example.com 来观察是否TXT已经正确解析。当观察到完成解析之后(或超过域名解析管理要求的TTL时间之后),按下enter键确认,certbot将生成证书文件以及证书路径。
可以查看所有保存的证书:
sudo certbot certificates
通常,certbot将在/etc/letsencrypt/live/xlevon.cn/下生成4个文件:
cert.pem:证书文件
chain.pem:证书链文件
fullchain.pem:完整证书链文件
privkey.pem:证书私钥
其中,我们在配置SSL/TLS时通常只会用到fullchain.pem以及privkey.pem文件。
证书每过三个月会过期,但是可以无限续签,可通过以上命令重新申请,也可重新需续签:
sudo certbot renew --force-renew
自动续签:
crontab -e
031sudo certbot renew --force-renew
certbot的更新证书命令,这个命令会自动判断是否需要更新,如果没有满足条件,会跳过更新。
crontab -e
03 /7 sudo certbot renew --cert-name .xlevon.cn --post-hook "sudo systemctl restart nginx"
上面命令表示每隔7天凌晨3点执行证书更新操作。
5、nginx配置SSL并反向代理本地&局域网内服务
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
# 代理服务器的最大连接数
proxy_connect_timeout 600;
# 反向代理缓存的时间
proxy_cache_valid 200 302 1h;
# 反向代理缓存的最大字节数
# proxy_cache_max_size 5m;
# 反向代理缓存的路径
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server
{
listen 80;
server_name *.xlevon.cn;
# 重定向HTTP请求到HTTPS
return 301 https://$server_name$request_uri;
}
# HTTPS配置
server {
listen 443 ssl;
server_name www.xlevon.cn;
# SSL证书的路径和密钥
ssl_certificate /etc/letsencrypt/live/xlevon.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xlevon.cn/privkey.pem;
# 反向代理配置-本机服务
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
server_name jellyfin.xlevon.cn;
# SSL证书的路径和密钥
ssl_certificate /etc/letsencrypt/live/xlevon.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xlevon.cn/privkey.pem;
# 反向代理配置-局域网服务
location / {
proxy_pass http://192.168.110.242:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
原创文章,转载请注明来源-X档案
版权归原作者 X档案库 所有, 如有侵权,请联系我们删除。