安装 acme.sh
curl https://get.acme.sh | sh
安装成功后执行 source ~/.bashrc
以确保脚本所设置的命令别名生效
如果安装报错,那么可能是因为系统缺少 acme.sh 所需要的依赖项,acme.sh 的依赖项主要是 netcat(nc),我们通过以下命令来安装这些依赖项,然后重新安装一遍 acme.sh:
apt-get -y install netcat
安装socat
apt-get -y install socat
域名DNS验证
推荐使用DNS-API验证,在https://github.com/Neilpang/acme.sh/tree/master/dnsapi可以找到各域名服务商对应的验证方式
例如,在阿里云解析的域名,需要先去 https://ram.console.aliyun.com/manage/ak找到并导入对应的key
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
使用acme.sh生成证书(注意,不同服务商的命令不一样,下面的命令是使用阿里云服务商的)
~/.acme.sh/acme.sh --issue --dns dns_ali -d example.com -d *.example.com
执行上述命令后,证书文件将会自动申请被存放在 ~/.acme.sh/
对应的域名文件夹中,如:~/.acme.sh/example.com
。后续 acme.sh将会自动更新该文件夹内的证书
安装证书和密钥
~/.acme.sh/acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.cer
--reloadcmd "service nginx force-reload"
该命令可将~/.acme.sh/example.com
内的证书拷贝到指定位置,/etc/nginx/ssl
为nginx使用证书的位置(可以自己修改),--reloadcmd
表示安装证书以后需要执行的命令
配置nginx
server{
listen 443 ssl;
server_name example.com
charset UTF-8;
ssl_certificate /etc/nginx/ssl/example.com.cer;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_session_timeout 5m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host example.com;
}
}
server {
listen 80;
server_name example.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。