现在很多WEB服务器都是采用Ubuntu操作系统,由于工作需要,经常部署网站及其SSL证书,下面记录下日常工作内容:在Ubuntu 24.04系统上,为Apache网站部署SSL证书的通用详细步骤。这个过程主要分为获取SSL证书和配置Apache两个大部分,证书也分收费和免费的。
部署SSL证书详细步骤
第一部分:获取SSL证书
可以选择免费或付费的证书颁发机构(CA)。最常用的免费证书是Let's Encrypt。
方法一:使用 Certbot 获取 Let's Encrypt 免费证书(推荐)
这是最简便和流行的方式。
-
更新系统并安装Certbot
首先,确保您的系统软件包是最新的,然后安装Certbot及其Apache插件。
sudo apt update sudo apt upgrade -y sudo apt install certbot python3-certbot-apache -y -
获取并自动配置证书
运行以下命令,Certbot会自动检测您的Apache虚拟主机,并引导您完成配置。请将
www.yourdomain.com替换为您实际的域名。sudo certbot --apache -d www.yourdomain.com-
过程中,Certbot会提示您输入邮箱地址用于安全通知和账号恢复。
-
需要阅读并同意服务条款。
-
它会询问是否愿意分享您的邮箱给电子前沿基金会(EFF),可选否。
-
最后,它会询问您是否希望将HTTP流量重定向到HTTPS。强烈建议选择"2"来启用重定向,以确保所有访问都使用安全的HTTPS。
-
-
自动续期测试
Let's Encrypt证书有效期为90天,但Certbot设置了自动续期任务。您可以测试自动续期是否正常工作:
sudo certbot renew --dry-run如果测试成功,证书将能够自动续期,无需手动干预。
方法二:使用商业SSL证书
如果您从其他提供商(如GoDaddy, DigiCert等)购买了商业证书,通常需要以下步骤:
-
生成证书签名请求(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文件是证书请求文件。
-
-
提交CSR并下载证书
将生成的
.csr文件内容提交给证书提供商。通过验证后,您将收到证书文件(通常为.crt或.pem格式)和可能的中间证书(Intermediate CA Certificate)。 -
上传证书文件
将收到的证书文件(如
yourdomain.crt)和中间证书文件上传到服务器,例如放到/etc/ssl/certs/目录。确保您的私钥文件(yourdomain.key)已在/etc/ssl/private/目录。
第二部分:配置Apache以使用SSL证书
如果您使用了上面的方法一(Certbot),配置通常是自动完成的,您可以跳过此部分。如果您是手动安装证书(方法二),请继续。
-
启用SSL模块
Apache需要加载SSL模块。
sudo a2enmod ssl sudo a2enmod rewrite -
配置虚拟主机
您需要为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</IfModule># 网站根目录 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>
-
-
启用站点并测试配置
-
启用新的SSL站点配置:
sudo a2ensite yourdomain-ssl.conf -
检查Apache配置是否有语法错误:
sudo apache2ctl configtest- 如果输出
Syntax OK,则继续。
- 如果输出
-
重新加载Apache以使配置生效:
sudo systemctl reload apache2
-
第三部分:验证部署
完成以上步骤后,请进行验证:
-
在浏览器中访问
https://www.yourdomain.com,检查地址栏是否显示安全锁标志。 -
使用在线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个网站可以实现。