nginx服务器通过acme申请证书
安装Nginx后用acme.sh申请HTTPS证书简易教程
(一)安装acme
#首先,确保系统已经安装了git、curl、micro等基础软件
sudo apt update
sudo apt install git curl micro socat
#通过curl命令或直接从GitHub上克隆acme.sh仓库来安装acme.sh
sudo curl https://get.acme.sh | sh -s email=[email protected]
#[email protected]替换为实际邮箱地址,替换的内容可以先行替换然后逐步执行
(二)生成证书
#在生成证书之前,请确保域名(假设为mydomain.com)已经正确解析到了服务器IP地址,并且修改Nginx配置文件(/etc/nginx/sites-available/default)
micro /etc/nginx/sites-available/default
#server块中已经设置好了对应的server_name
server_name mydomain.com;
#使用acme.sh生成证书,假设使用的是HTTP验证方式(acme.sh会在网站根目录下生成一个临时文件进行验证,默认根目录为/var/www/html)
/root/.acme.sh/acme.sh –issue -d mydomain.com -w /var/www/html
#将mydomain.com替换为实际域名,/var/www/html替换为实际网站根目录,特别注意如果调整根目录要及时调整权限,默认用户为www-data(/etc/nginx/nginx.conf文件第一行),比如根目录调整为/home/ubuntu/html/
chown -R www-data:www-data /home/ubuntu/html/
chmod -R 755 /home/ubuntu/html/
(三)安装证书到Nginx
#证书生成后,acme.sh会将证书文件保存在~/.acme.sh/目录下(建议root目录),将这些文件复制到Nginx的证书目录下:
sudo mkdir -p /etc/nginx/ssl
sudo cp ~/.acme.sh/mydomain.com_ecc/* /etc/nginx/ssl/
#编辑配置文件
micro /etc/nginx/sites-available/default
#此步删除原来所有内容,重新配置文件如下
1 | |
#重新加载配置文件
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl status nginx
(四)设置定时任务以定期更新证书
#acme.sh支持设置定时任务以定期更新证书
crontab -e
#添加以下行(假设使用的是root用户,并且acme.sh安装在默认位置):
0 0 * * * “/root/.acme.sh”/acme.sh –cron –home “/root/.acme.sh” > /dev/null
(五)排错纠错
#如果通过域名不能访问网站
1.检查错误日志
tail /var/log/nginx/error.log -n 20
2.检查网页根目录是否存在index.html文件,默认没有index.html
cd /var/www/html
3.如果显示端口被占用,执行
lsof -i :443
#或者执行:
netstat -ano | find “443”
kill -9 PID
4.没有读写权限,执行上述第(二)步命令
chown -R www-data:www-data /home/ubuntu/html/
chmod -R 755 /home/ubuntu/html/
5.SELinux安全措施太严格
#查看状态
getenforce
#编辑/etc/selinux/config
sudo micro /etc/selinux/config
##内容修改为
SELINUX=disabled
6.acme命令输入没反应,使用命令的绝对路径
/root/.acme.sh/acme.sh