温馨提示×

Linux域名证书如何安装

小樊
44
2025-11-02 06:33:27
栏目: 云计算

Linux域名证书安装指南(以Let’s Encrypt+Certbot为例)

一、前期准备

  1. 基础条件:拥有已备案的域名,并完成DNS解析至服务器IP;服务器已安装Nginx/Apache等Web服务器(本文以Nginx为例);开放80端口(HTTP验证)和443端口(HTTPS服务)。
  2. 工具安装:根据系统类型安装Certbot及对应插件:
    • Ubuntu/Debiansudo apt update && sudo apt install certbot python3-certbot-nginx
    • CentOS/RHEL:先启用EPEL仓库(sudo yum install epel-release),再执行sudo yum install certbot python3-certbot-nginx

二、获取SSL证书(自动验证)

使用Certbot的Nginx插件自动完成证书申请与Web服务器配置:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  • -d:指定主域名及子域名(如需泛域名支持,见下文“泛域名证书”);
  • Certbot会自动完成HTTP验证,并修改Nginx配置文件(路径如/etc/nginx/sites-available/yourdomain.conf),添加HTTPS监听端口(443)及证书路径。

三、手动安装证书(通用流程,适用于Apache或其他场景)

若需手动配置,需先获取证书文件(从CA处下载,通常包含.crt主证书、.key私钥、.ca-bundle中间证书链),并上传至服务器安全目录(如/etc/ssl/yourdomain/):

sudo mkdir -p /etc/ssl/yourdomain
sudo cp yourdomain.crt /etc/ssl/yourdomain/
sudo cp yourdomain.key /etc/ssl/yourdomain/
sudo cp ca_bundle.crt /etc/ssl/yourdomain/  # 可选,部分CA会提供

配置Nginx:编辑站点配置文件,添加以下内容:

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;
    ssl_certificate /etc/ssl/yourdomain/yourdomain.crt;      # 主证书路径
    ssl_certificate_key /etc/ssl/yourdomain/yourdomain.key;  # 私钥路径
    ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt; # 中间证书链(可选)
    
    # SSL优化配置(可选)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";
    
    # 其他站点配置(如root目录、index文件)
    root /var/www/html;
    index index.html;
}

强制HTTP跳转HTTPS:添加以下server块,将80端口的HTTP请求重定向至443端口:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

测试并重启Nginx

sudo nginx -t  # 检查配置语法
sudo systemctl restart nginx  # 重启服务

四、泛域名证书安装(DNS验证)

若需支持*.yourdomain.com泛域名,需使用DNS验证方式(手动添加TXT记录):

sudo certbot certonly --manual --preferred-challenges dns -d *.yourdomain.com -d yourdomain.com
  • 执行命令后,Certbot会提示你在DNS服务商处添加_acme-challenge.yourdomain.com的TXT记录(记录值为命令输出的字符串);
  • 验证通过后,证书将生成于/etc/letsencrypt/live/yourdomain.com/目录。

五、证书自动续期

Let’s Encrypt证书有效期为90天,需配置自动续期以避免过期:

  1. 测试续期sudo certbot renew --dry-run(模拟续期流程,无实际修改);
  2. 添加定时任务:编辑crontab(sudo crontab -e),添加以下内容(每天凌晨3点检查续期,成功后重启Nginx):
    0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
    
  • Certbot会自动处理续期,无需手动干预。

六、常见问题排查

  1. 权限问题:私钥文件(.key)需设置为仅root可读,避免泄露:
    sudo chmod 600 /etc/ssl/yourdomain/yourdomain.key
    
  2. 证书链不完整:若浏览器提示“证书不受信任”,需合并主证书与中间证书链(cat yourdomain.crt ca_bundle.crt > combined.crt),并更新Nginx配置中的ssl_certificate路径。
  3. 端口未开放:若无法访问HTTPS服务,需检查服务器安全组(云服务器)或防火墙是否开放443端口:
    sudo ufw allow 443/tcp  # Ubuntu(ufw防火墙)
    sudo firewall-cmd --add-port=443/tcp --permanent && sudo firewall-cmd --reload  # CentOS(firewalld)
    

0