amce.sh制作免费https证书
安装acme.sh
1 2
| apt install socat netcat -y # standalone模式下需要安装 curl https://get.acme.sh | sh
|
普通用户和 root 用户都可以安装使用。
会安装在 ~/.acme.sh/
目录下,以后生成的证书也会在这里面,按照域名为文件夹安置。
理论上会自动添加一个别名,但有时候并不会生成,需要手动执行以下命令:
生成证书
80端口不能占用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #!/bin/bash #fonts color Green="\033[32m" Red="\033[31m" # Yellow="\033[33m" GreenBG="\033[42;37m" RedBG="\033[41;37m" Font="\033[0m"
#notification information # Info="${Green}[信息]${Font}" OK="${Green}[OK]${Font}" Error="${Red}[错误]${Font}"
install_path="/home/test" domain="www.autootto.ml" file_name="test"
acme() { if acme.sh --issue -d "${domain}" --standalone -k ec-256 --force --test; then echo -e "${OK} ${GreenBG} SSL 证书测试签发成功,开始正式签发 ${Font}" rm -rf "$HOME/.acme.sh/${domain}_ecc" sleep 2 else echo -e "${Error} ${RedBG} SSL 证书测试签发失败 ${Font}" rm -rf "$HOME/.acme.sh/${domain}_ecc" exit 1 fi
if acme.sh --issue -d "${domain}" --standalone -k ec-256 --force; then echo -e "${OK} ${GreenBG} SSL 证书生成成功 ${Font}" sleep 2 mkdir -p ${install_path} if acme.sh --installcert -d "${domain}" --fullchainpath ${install_path}/${file_name}.crt --keypath ${install_path}/${file_name}.key --ecc --force; then echo -e "${OK} ${GreenBG} 证书配置成功 ${Font}" sleep 2 fi else echo -e "${Error} ${RedBG} SSL 证书生成失败 ${Font}" rm -rf "$HOME/.acme.sh/${domain}_ecc" exit 1 fi } # --reloadcmd "service apache2 force-reload" acme
|
Nginx配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| listen 80; listen 443 ssl http2; server_name localhost;
ssl_certificate /usr/local/nginx/ssl_cert/localhost/localhost.cer; ssl_certificate_key /usr/local/nginx/ssl_cert/localhost/localhost.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
|
证书更新
Let's Encrypt 的证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。
这里了解一下acme.sh的自动更新:安装acme时会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
查看任务
1 2
| # crontab -l 47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
|
手动renew一下证书可以通过这个命令
设置软件自动更新
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.所以为了省心省力,最好还是设置一下软件的自动更新,执行下面的命令就可以了。
1
| acme.sh --upgrade --auto-upgrade
|