面板 · Apache · 容器
宝塔 / 1Panel / Apache / Docker
面板自己有一套证书目录和命名习惯。这里的原则只有一条:让面板继续用它的文件名,用软链指到平台上传的文件, 这样面板升级、站点重建都不会把你的配置冲掉。
先记住三个文件名
平台上传到「证书路径」的文件名由域名决定,不会变:
| 平台文件 | 面板/服务里通常叫 |
|---|---|
example.com_full_chain.pem | fullchain.pem |
example.com_key.pem | privkey.pem |
example.com_cert.pem | cert.pem(一般不用) |
宝塔面板
站点证书目录一般是 /www/server/panel/vhost/cert/<站点名>/。把「证书路径」直接填成这个目录,然后在服务器上做软链:
cd /www/server/panel/vhost/cert/example.com
ln -sf example.com_full_chain.pem fullchain.pem
ln -sf example.com_key.pem privkey.pem
ln -sf example.com_cert.pem cert.pem
宝塔的站点 nginx 配置本来就读 fullchain.pem / privkey.pem,所以不需要改配置。不要在宝塔里点「申请 Let's Encrypt 证书」,那会把文件改回它自己签的版本。
不要在面板里删站点重建。重建站点会把 cert 目录一起清掉,软链也就没了。真删了,重新执行上面的三条
ln -sf 就行,证书本身还在平台侧。
重载命令:nginx -s reload,在宝塔环境里等价于 /etc/init.d/nginx reload。
1Panel
OpenResty 站点的证书目录通常是 /opt/1panel/apps/openresty/openresty/conf/ssl/<域名>/。同样用软链:
cd /opt/1panel/apps/openresty/openresty/conf/ssl/example.com
ln -sf example.com_full_chain.pem fullchain.pem
ln -sf example.com_key.pem privkey.pem
1Panel 的站点配置里 ssl_certificate 指向 fullchain.pem,配好软链后不需要改站点。
1Panel 会在数据库里记录证书来源。如果你在面板里操作过「证书」模块,可能触发它重新申请或覆盖文件;接入后建议不要在面板里再点该站点的证书申请。
Apache
<VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example.com/example.com_full_chain.pem
SSLCertificateKeyFile /etc/apache2/ssl/example.com/example.com_key.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
Apache 2.4.8 之后不再需要 SSLCertificateChainFile:把完整链放在 SSLCertificateFile 里即可。重载:
apachectl configtest && apachectl -k graceful
Docker 里的 Nginx
关键是证书目录必须挂载进容器,重载要在容器内执行:
docker run -d --name nginx \
-p 80:80 -p 443:443 \
-v /etc/nginx/ssl:/etc/nginx/ssl:ro \
-v /etc/nginx/conf.d:/etc/nginx/conf.d:ro \
nginx:stable
# 证书更新后
docker exec nginx nginx -t && docker exec nginx nginx -s reload
宿主机上
nginx -s reload 对容器里的进程无效。用 inotify 监听宿主机目录、再 docker exec 重载,是最省心的组合。
另外 :ro 挂载只影响容器内改写,宿主机的上传不受影响。
路径速查
| 环境 | 证书目录 | 重载 |
|---|---|---|
| 宝塔 | /www/server/panel/vhost/cert/<站点>/ | nginx -s reload |
| 1Panel | /opt/1panel/apps/openresty/openresty/conf/ssl/<域名>/ | docker exec 1panel-openresty nginx -s reload |
| aaPanel | /www/server/panel/vhost/cert/<站点>/ | nginx -s reload |
| Debian/Ubuntu Apache | /etc/apache2/ssl/<域名>/ | apachectl -k graceful |
| RHEL 系 Apache | /etc/httpd/ssl/<域名>/ | systemctl reload httpd |