服务器如何部署ssl证书

部署SSL证书有一键自动方式手动配置方式两种。如果你是第一次配置,建议选择自动方式,可以大幅降低出错的可能。

这里为你梳理了在主流服务器上部署证书的具体操作,以及在遇到问题时该如何排查。

🎯 一键自动:使用ACME协议部署

这种方式适合使用Apache或Nginx,并拥有服务器sudo/root权限的Linux用户

  1. 安装Certbot工具
    Certbot是一个免费开源的自动化工具,能帮你完成证书申请、配置和续期。

    • 对于Ubuntu/Debian系统:

      bash
      # 如果你是Apache服务器sudo apt updatesudo apt install certbot python3-certbot-apache# 如果你是Nginx服务器sudo apt updatesudo apt install certbot python3-certbot-nginx

    • 对于CentOS/RHEL/AlmaLinux/Rocky Linux系统:

      bash
      # 先安装EPEL软件源sudo dnf install epel-releasesudo dnf update# 如果你是Apache服务器sudo dnf install certbot python3-certbot-apache# 如果你是Nginx服务器sudo dnf install certbot python3-certbot-nginx

  2. 运行并申请证书
    安装完成后,只需要一条命令,Certbot就会自动完成证书申请和配置。

    运行命令后,Certbot会引导你完成几个简单设置,比如输入你的邮箱、需要绑定的域名,并询问你是否需要自动将HTTP流量重定向到HTTPS。选择“是”(2或Redirect),就能一步到位完成所有配置

    • 对于Apache:

      bash
      sudo certbot --apache
    • 对于Nginx:

      bash
      sudo certbot --nginx
  3. 设置自动续期
    Let's Encrypt等免费证书的有效期通常是90天。不用担心,Certbot会自动设置一个定时任务,在证书到期前为你无缝更新证书。你只需执行以下命令确认定时任务在正常运行即可:

    bash
    systemctl list-timers | grep certbot

🔧 手动配置:主流Web服务器操作指南

如果因为某些原因你无法使用自动方式,或需要在自己的云服务器上手动配置,可以参考以下步骤。

Apache 服务器

  1. 准备工作

    • 确保服务器防火墙和安全组已开放443端口

    • 从你的证书提供商(如腾讯云、阿里云、华为云等)处下载 Apache 格式的证书文件。通常包含1_root_bundle.crt(根证书链)、2_你的域名.crt(域名证书)和 3_你的域名.key(私钥文件)

  2. 配置步骤

    • 上传证书文件:将下载的三个证书文件上传到你的Apache服务器,例如存放到/etc/httpd/ssl/目录下

    • 启用SSL模块:编辑Apache主配置文件 httpd.conf,找到并取消以下两行前的注释符#

      text
      LoadModule ssl_module modules/mod_ssl.so
      Include conf/extra/httpd-ssl.conf
    • 编辑SSL配置文件:打开或创建 httpd-ssl.conf 文件(或conf.d/ssl.conf),在 <VirtualHost _default_:443> 代码块中,配置以下四行关键指令

      text
      ServerName  你的域名:443
      SSLCertificateFile      /etc/httpd/ssl/2_你的域名.crt
      SSLCertificateKeyFile   /etc/httpd/ssl/3_你的域名.key
      SSLCertificateChainFile /etc/httpd/ssl/1_root_bundle.crt

      注意:私钥文件(.key)的权限非常重要,建议设置为600(仅root用户可读写)以确保安全。

    • 重启Apache服务:配置修改后,重启服务使其生效。

      bash
      # CentOS/RHEL系统sudo systemctl restart httpd# Ubuntu/Debian系统sudo systemctl restart apache2

Nginx 服务器

  1. 准备工作

    • 同样确保服务器防火墙和安全组的443端口已开放

    • 下载Nginx格式的证书文件。Nginx通常只需要.crt(或.pem)证书文件和.key私钥文件

  2. 配置步骤

    • 上传证书文件:将证书文件和私钥文件上传到Nginx服务器,例如存放到/etc/nginx/ssl/目录下。

    • 编辑站点配置文件:编辑你的站点配置文件(通常在/etc/nginx/conf.d//etc/nginx/sites-available/目录下),在server块中添加或修改以下配置

      nginx
      server {
          listen       443 ssl;
          server_name  你的域名;
      
          ssl_certificate      /etc/nginx/ssl/你的域名.crt;
          ssl_certificate_key  /etc/nginx/ssl/你的域名.key;
      
          # 强烈建议添加,启用强加密协议
          ssl_protocols TLSv1.2 TLSv1.3;
          
          # 可选:配置网站根目录
          location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm;
          }}# 可选:将HTTP请求重定向到HTTPSserver {
          listen       80;
          server_name  你的域名;
          return 301 https://$host$request_uri;}
    • 测试并重启Nginx:先测试配置文件是否有语法错误,然后再重启。

      bash
      # 测试配置文件sudo nginx -t# 如果测试成功,则平滑重启Nginxsudo nginx -s reload

IIS 服务器

IIS(Windows Server)的配置相对直观,主要通过图形界面操作

  1. 准备工作

    • 在服务器管理器中,确保已安装“Web服务器角色”下的“SSL证书”支持。

    • 下载IIS格式的证书文件。IIS需要的是包含私钥的.pfx文件和一个密码文件(.txt

  2. 配置步骤

    • 导入证书:打开“IIS管理器”,在服务器主页中找到并双击“服务器证书”。在右侧操作栏点击“导入”,选择你的.pfx文件并输入密码

    • 绑定站点:在“IIS管理器”中,找到你要配置的网站,点击右侧的“绑定”。在弹出的窗口中点击“添加”,选择类型为“https”,端口保持“443”,并从下拉框中选择你刚刚导入的SSL证书。点击“确定”保存


您可以还会对下面的文章感兴趣:

暂无相关文章