安装 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;
}

MartinDai
1.5k 声望236 粉丝

保持学习心态,持续成长