2024-09-25
为什么要安装nginx?一开始我看教程不懂,以为只是要测试证书是否成功,所以需要一个web服务器。
其实,nginx在这里的用途是,配置证书。如果不进入nginx配置,证书是无法生效的。
基于CentOs系统,安装:
sudo yum install epel-release
sudo yum install nginx
Nginx不包含在默认的仓库中,所以你需要添加EPEL仓库。
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo nginx -t
通常在/etc/nginx/nginx.conf
中。
指向你的服务器IP地址。
ping yourdomain.com
出现你的服务器IP地址,说明解析成功。
sudo vim /etc/nginx/nginx.conf
看看root的路径,一般是/usr/share/nginx/html
。
在root
设置下方,输入 index index.html
.
同时,server_name
设置为你的域名。
server {
listen 80;
server_name yourdomain.com;
root /usr/share/nginx/html;
index index.html;
}
:wq
退出,输入:
echo 'Hello, World!' | sudo tee /usr/share/nginx/html/index.html
sudo systemctl restart nginx
现在,访问你的域名,应该可以看到Hello, World!。 实测,chrome可能不会正常显示,可以试试firefox。我最后是用curl命令测试的:
curl yourdomain.com
如果出现Hello, World!,说明你的web服务已经架设成功。
curl https://get.acme.sh | sh -s [email protected]
这里的email是你的邮箱地址。
sudo vim ~/.bashrc
加上:
alias acme.sh='/root/.acme.sh/acme.sh'
然后:
source ~/.bashrc
这样,就可以直接用acme.sh
命令了。
acme.sh --set-default-ca --server letsencrypt
acme.sh默认的是ZeroSSL,但是ZeroSSL不大稳定,所以我们切换到letsencrypt。
当然,你也可以不切换,直接用ZeroSSL。但你可以看看网上对ZeroSSL延时的不满。
acme.sh --register-account -m [email protected]
实测下来,国内服务器时间可能会花得比较久,可以试一下这个方法:
sudo vim ~/.acme.sh/account.conf
将邮箱填入即可。
由于我们接下来需要DNS验证,所以需要获取access key。由于我是阿里云解析的,就说阿里云的步骤:
https://ram.console.aliyun.com/manage/ak
生成一个 key 和 secret
export Ali_Key="yourkey"
export Ali_Secret="yoursecret"
acme.sh --issue --dns dns_ali -d linxz.online -d *.linxz.online
成功后,会提示你证书的位置。通常在/root/.acme.sh/yourdomain.com
。
有用的是两个文件:fullchain.cer
和yourdomain.com.key
。
打开nginx配置文件:
sudo vim /etc/nginx/nginx.conf
完成443端口的配置:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name linxz.online;
ssl_certificate /home/lighthouse/.acme.sh/linxz.online_ecc/fullchain.cer;
ssl_certificate_key /home/lighthouse/.acme.sh/linxz.online_ecc/linxz.online.key;
client_max_body_size 100m;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
sudo systemctl restart nginx
再次通过curl命令测试:
curl https://linxz.online
如果出现Hello, World!,说明你的证书配置成功。
acme.sh --installcert -d linxz.online --key-file /home/lighthouse/.acme.sh/linxz.online_ecc/linxz.online.key --fullchain-file /home/lighthouse/.acme.sh/linxz.online_ecc/fullchain.cer --reloadcmd "sudo systemctl reload nginx"
crontab -l
你可以看到以下命令:
45 12 * * * "/home/lighthouse/.acme.sh"/acme.sh --cron --home "/home/lighthouse/.acme.sh" > /dev/null
这个命令的意思是,每天12:45,自动更新证书。
acme.sh --upgrade --auto-upgrade
这样,acme.sh就会自动更新了。