Ubuntu服务器上为Apache网站安装部署SSL证书详细步骤

现在很多WEB服务器都是采用Ubuntu操作系统,由于工作需要,经常部署网站及其SSL证书,下面记录下日常工作内容:在Ubuntu 24.04系统上,为Apache网站部署SSL证书的通用详细步骤。这个过程主要分为获取SSL证书和配置Apache两个大部分,证书也分收费和免费的。

部署SSL证书详细步骤

第一部分:获取SSL证书

可以选择免费或付费的证书颁发机构(CA)。最常用的免费证书是Let's Encrypt。

方法一:使用 Certbot 获取 Let's Encrypt 免费证书(推荐)

这是最简便和流行的方式。

  1. 更新系统并安装Certbot

    首先,确保您的系统软件包是最新的,然后安装Certbot及其Apache插件。

    复制代码
    sudo apt update
    sudo apt upgrade -y
    sudo apt install certbot python3-certbot-apache -y
  2. 获取并自动配置证书

    运行以下命令,Certbot会自动检测您的Apache虚拟主机,并引导您完成配置。请将 www.yourdomain.com替换为您实际的域名。

    复制代码
    sudo certbot --apache -d www.yourdomain.com
    • 过程中,Certbot会提示您输入邮箱地址用于安全通知和账号恢复。

    • 需要阅读并同意服务条款。

    • 它会询问是否愿意分享您的邮箱给电子前沿基金会(EFF),可选否。

    • 最后,它会询问您是否希望将HTTP流量重定向到HTTPS。强烈建议选择"2"来启用重定向,以确保所有访问都使用安全的HTTPS。

  3. 自动续期测试

    Let's Encrypt证书有效期为90天,但Certbot设置了自动续期任务。您可以测试自动续期是否正常工作:

    复制代码
    sudo certbot renew --dry-run

    如果测试成功,证书将能够自动续期,无需手动干预。

方法二:使用商业SSL证书

如果您从其他提供商(如GoDaddy, DigiCert等)购买了商业证书,通常需要以下步骤:

  1. 生成证书签名请求(CSR)

    在服务器上使用OpenSSL生成私钥和CSR文件。

    复制代码
    sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/yourdomain.key -out /etc/ssl/certs/yourdomain.csr
    • 系统会提示您输入域名信息(如Common Name,即您的域名)。

    • 生成的 .key文件是您的私钥,务必保密。.csr文件是证书请求文件。

  2. 提交CSR并下载证书

    将生成的 .csr文件内容提交给证书提供商。通过验证后,您将收到证书文件(通常为 .crt.pem格式)和可能的中间证书(Intermediate CA Certificate)。

  3. 上传证书文件

    将收到的证书文件(如 yourdomain.crt)和中间证书文件上传到服务器,例如放到 /etc/ssl/certs/目录。确保您的私钥文件(yourdomain.key)已在 /etc/ssl/private/目录。

第二部分:配置Apache以使用SSL证书

如果您使用了上面的方法一(Certbot),配置通常是自动完成的,您可以跳过此部分。如果您是手动安装证书(方法二),请继续。

  1. 启用SSL模块

    Apache需要加载SSL模块。

    复制代码
    sudo a2enmod ssl
    sudo a2enmod rewrite
  2. 配置虚拟主机

    您需要为HTTPS创建一个新的虚拟主机配置或修改现有配置。配置文件通常位于 /etc/apache2/sites-available/

    • 编辑或创建SSL虚拟主机文件,例如 yourdomain-ssl.conf

      sudo nano /etc/apache2/sites-available/yourdomain-ssl.conf

    • 在文件中添加以下配置内容,并替换其中的路径和域名为您的实际信息:

      <IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.yourdomain.com
      复制代码
            # 网站根目录
            DocumentRoot /var/www/html
      
            # 日志文件
            ErrorLog ${APACHE_LOG_DIR}/yourdomain_ssl_error.log
            CustomLog ${APACHE_LOG_DIR}/yourdomain_ssl_access.log combined
      
            # SSL 配置
            SSLEngine on
            # 证书文件路径
            SSLCertificateFile /etc/ssl/certs/yourdomain.crt
            # 私钥文件路径
            SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
            # 中间证书文件路径(如果有)
            SSLCertificateChainFile /etc/ssl/certs/yourdomain_intermediate.crt
      
            # 其他配置...
        </VirtualHost>
      
        # HTTP 重定向到 HTTPS(可选但推荐)
        <VirtualHost *:80>
            ServerName www.yourdomain.com
            Redirect permanent / https://www.yourdomain.com/
        </VirtualHost>
      </IfModule>
  3. 启用站点并测试配置

    • 启用新的SSL站点配置:

      复制代码
      sudo a2ensite yourdomain-ssl.conf
    • 检查Apache配置是否有语法错误:

      复制代码
      sudo apache2ctl configtest
      • 如果输出 Syntax OK,则继续。
    • 重新加载Apache以使配置生效:

      复制代码
      sudo systemctl reload apache2
第三部分:验证部署

完成以上步骤后,请进行验证:

  1. 在浏览器中访问 https://www.yourdomain.com,检查地址栏是否显示安全锁标志。

  2. 使用在线SSL检测工具(如 SSL Labs SSL Test)检查您的证书配置是否正确和安全。

重要安全提示

  • 备份私钥 :您的私钥文件(.key)是核心机密,一旦丢失,证书将无法使用,请妥善备份。

  • 文件权限 :确保私钥文件只有root用户可读,权限通常设置为 600

    复制代码
    sudo chmod 600 /etc/ssl/private/yourdomain.key
  • 防火墙 :确保Ubuntu的防火墙(如 ufw)已放行HTTPS(端口443)流量。

    复制代码
    sudo ufw allow 'Apache Full'
    # 或者单独允许443端口
    sudo ufw allow 443/tcp

通过以上步骤就能在Ubuntu 24.04的Apache服务器上部署SSL证书,亲测过3个网站可以实现。

相关推荐
CAU界编程小白2 小时前
Linux系统编程系列之进程间通信下(共享内存)
linux·共享内存
定偶2 小时前
Ubuntu 20.04 网络与软件源问题
网络·ubuntu·php·系统优化
郝学胜-神的一滴2 小时前
深入理解网络分层模型:数据封包与解包全解析
linux·开发语言·网络·程序人生·算法
lihao lihao2 小时前
linux的基本命令
linux·运维·服务器
Three~stone2 小时前
windows和liunx(Ubuntn/CentOS/Deepin/Fedora)资源镜像附Vmware安装包
linux·windows·centos
bloglin999992 小时前
centos配置域名解析
linux·运维·centos
Konwledging2 小时前
VPU Spec
linux
chenzhiyuan20182 小时前
RISC-V vs ARM:为什么工业与边缘计算仍然选择 ARM 架构?
linux
WLDLSW2 小时前
MobaXterm如何设置鼠标中键或者右键粘贴
linux·服务器