docker運行acme.sh 安裝配置泛域名證書


首先是啟動daemon的命令

docker run --rm  -itd  \
  -v "$(pwd)/out":/acme.sh  \
  --net=host \
  --name=acme.sh \
  neilpang/acme.sh daemon

這樣就會后台掛一個包含acme.sh的容器,並且這個容器會自動走定時任務以便自動續簽證書。這里注意如果你使用了dnsapi(比如說簽wildcard之類的場景),別忘了在這里使用-e參數去配置你的環境變量,像這樣:

docker run --rm  -itd  \
  -v "$(pwd)/out":/acme.sh  \
  -e CF_Email="example@example.com" \
  -e CF_Key="asasasasasadasasas" \
  --net=host \
  --name=acme.sh \
  neilpang/acme.sh daemon

實際上安裝好docker后執行以下3步即可

1)博主使用騰訊雲域名如下(-v,DP_Key,DP_Id配置自行修改):

 docker run  -itd  \
  -v "/dnmp/services/nginx/ssl/acme":/acme.sh  \
  -e DP_Key="xxxxxxxxxxxxxxxx" \
  -e DP_Id="1111" \
  --net=host \
  --name=acme.sh \
  neilpang/acme.sh daemon

這里有有關於dnsapi模式的詳細用法

然后一切沒問題返回出來Container ID之后別忘了docker ps看一下容器是否在正常跑。

容器准備好了就可以用docker exec跑各種acme.sh的命令了。

docker  exec  acme.sh --help

2)簽發泛域名證書

docker exec acme.sh --issue --dns dns_dp -d aa.com -d *.aa.com

所生成的證書文件會自動保存到docker run時創建的數據卷中。(比如這里是$(pwd)/outrun命令執行時的根目錄中的out文件夾)

3)Nginx 配置Http和Https共存

listen 80; #如果硬性要求全部走https協議,這一行去除
listen 443 ssl http2; #如果硬性要求全部走https協議,這里去除ssl
server_name chandao.test.cn;

#ssl on; #如果硬性要求全部走https協議,這里開啟ssl on
ssl_certificate /dnmp/services/nginx/ssl/acme/aa.com/aa.com.cer;
ssl_certificate_key /dnmp/services/nginx/ssl/acme/aa.com/aa.com.key;

#ssl性能調優
#nginx 1.13.0支持了TLSv1.3,TLSv1.3相比之前的TLSv1.2、TLSv1.1等性能大幅提升
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
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優化https下Nginx的性能
ssl_session_cache builtin:1000 shared:SSL:10m;
#OCSP Stapling 開啟。OCSP是用於在線查詢證書吊銷情況的服務,使用OCSP Stapling能將證書有效狀態的信息緩存到服務器,提高 TLS 握手速度
#ssl_stapling on;
#OCSP Stapling 驗證開啟
#ssl_stapling_verify on;

設置 crontab 任務自動續簽(可不設置)

運行 crontab -e 來編輯 crontab 文件,添加如下內容,保存即可。

10 0 * * * docker exec acme.sh --cron   # acme.sh為容器名,每天0點10分執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM