如何在Ubuntu 16.04的XAMPP Apache上配置Certbot SSL证书
给XAMPP Apache配置Let's Encrypt SSL证书
我之前也碰到过一模一样的情况——Certbot的--apache插件是专门给系统通过apt安装的Apache设计的,它会自动去改/etc/apache2下面的配置,但XAMPP的Apache是独立装在/opt/lampp里的,两套完全不搭,所以得换手动方式来搞,具体步骤如下:
步骤1:先搞定端口冲突问题
系统自带的Apache和XAMPP的Apache会抢80/443端口,所以得先把系统Apache停掉:
sudo systemctl stop apache2 # 要是你不想系统Apache开机自动启动,可以再加这条 sudo systemctl disable apache2
然后启动XAMPP的Apache,确保它能正常运行:
sudo /opt/lampp/lampp start apache
步骤2:用Certbot手动获取证书
咱们用certonly模式+webroot验证方式,这种方式不用停Apache,只要能访问网站根目录就行:
sudo certbot certonly --webroot
执行后跟着引导走:
- 输入你的域名(比如
example.com) - 输入网站根目录:这里填XAMPP的根目录
/opt/lampp/htdocs
验证通过后,证书会生成在/etc/letsencrypt/live/你的域名/目录下,关键文件是: fullchain.pem:完整的证书链文件privkey.pem:证书私钥文件
步骤3:手动配置XAMPP的Apache启用SSL
打开XAMPP的SSL配置文件:
sudo nano /opt/lampp/etc/extra/httpd-ssl.conf找到以下两个配置项,替换成你的证书路径:
- 修改证书文件路径:
SSLCertificateFile "/etc/letsencrypt/live/你的域名/fullchain.pem" - 修改私钥文件路径:
SSLCertificateKeyFile "/etc/letsencrypt/live/你的域名/privkey.pem"
提示:如果配置里有
SSLCertificateChainFile,直接注释掉就行,因为fullchain.pem已经包含了证书链信息。- 修改证书文件路径:
确保XAMPP主配置文件启用了SSL模块:
打开/opt/lampp/etc/httpd.conf,找到下面这行,去掉前面的#注释:#Include etc/extra/httpd-ssl.conf改成:
Include etc/extra/httpd-ssl.conf
步骤4:重启XAMPP Apache并测试
sudo /opt/lampp/lampp restart apache
现在访问https://你的域名,应该就能看到SSL证书正常生效了。
步骤5:设置证书自动续期
Let's Encrypt证书只有90天有效期,得设置自动续期。因为XAMPP的Apache不是系统服务,咱们得给Certbot加个续期钩子,让它续期完自动重启XAMPP Apache:
- 创建一个续期钩子脚本:
sudo nano /etc/letsencrypt/renewal-hooks/post/restart_xampp_apache.sh - 写入以下内容:
#!/bin/bash /opt/lampp/lampp restart apache - 给脚本加执行权限:
sudo chmod +x /etc/letsencrypt/renewal-hooks/post/restart_xampp_apache.sh - 测试一下自动续期是否正常:
要是测试通过,以后Certbot就会自动续期证书,并且重启XAMPP Apache了。sudo certbot renew --dry-run
内容的提问来源于stack exchange,提问作者BozZ
相关产品推荐
相关产品推荐

