本帖最后由 sailyang 于 2020-4-10 10:11 编辑
Let’sEncrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,Let’sEncrypt获得IdenTrust交叉签名,这就是说可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持,Let’sEncrypt签发的证书有效期只有90天,甚至希望缩短到60天。有效期越短,泄密后可供监控的窗口就越短。为了支撑这么短的有效期,就必须自动化验证和签发。 一、部署: 下面说下利用Let’sEncrypt的ACME协议在服务器上运用acme.sh脚本来申请、管理SSL证书。 2.把acme.sh安装到你的root目录下:~/.acme.sh/并创建一个bash的alias,方便你的使用:acme.sh=~/.acme.sh/acme.sh 3.安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中:/.acme.sh/ 4.安装结束后会自动添加一条定时任务,使用crontab-l查看。
二、验证 acme.sh实现了acme协议支持的所有验证协议.一般有两种方式验证:http和dns验证. 1、http方式需要在你的网站根目录下放置一个文件,来验证你的域名所有权,完成验证.然后就可以生成证书了. acme.sh--issue-dmydomain.com-dwww.mydomain.com--webroot/home/wwwroot/mydomain.com/ 只需要指定域名,并指定域名所在的网站根目录.acme.sh会全自动的生成验证文件,并放到网站的根目录,然后自动完成验证.最后会聪明的删除验证文件.整个过程没有任何副作用.如果你用的apache服务器,acme.sh还可以智能的从apache的配置中自动完成验证,你不需要指定网站根目录:acme.sh--issue-dmydomain.com--apache。如果你用的nginx服务器,或者反代,acme.sh还可以智能的从nginx的配置中自动完成验证,你不需要指定网站根目录:acme.sh--issue-dmydomain.com--nginx 2.如果没有运行任何web服务,80端口是空闲的,那么acme.sh还能假装自己是一个webserver,临时听在80端口,完成验证:acme.sh--issue-dmydomain.com--standalone。dns方式,在域名上添加一条txt解析记录,验证域名所有权.这种方式的好处是,你不需要任何服务器,不需要任何公网ip,只需要dns的解析记录即可完成验证.acme.sh--issue--dns-dmydomain.com。然后,acme.sh会生成相应的解析记录显示出来,你只需要在你的域名管理面板中添加这条txt记录即可.等待解析完成之后,重新生成证书:acme.sh--renew-dmydomain.com 注意第二次这里用的是–renew dns方式的真正强大之处在于可以使用域名解析商提供的api自动添加txt记录完成验证.acme.sh目前支持cloudflare,dnspod,cloudxns,godaddy以及ovh等数十种解析商的自动集成.
三、阿里云验证, 1.进入控制台,右上角你的头像里,有AccessKey然后: exportAli_Key="123123" exportAli_Secret="456456" acme.sh--issue--dnsdns_ali-daa.com-dwww.aa.com 多个域名就增加-dwww.bb.com经过等待120秒后,证书就会自动生成 3、copy/安装证书 前面证书生成以后,接下来需要把证书copy到真正需要用它的地方.默认生成的证书都放在安装目录下:~/.acme.sh/, 4、更新证书 目前证书在60天以后会自动更新,你无需任何操作.今后有可能会缩短这个时间,不过都是自动的,你不用关心. 5、更新acme.sh 目前由于acme协议和letsencryptCA都在频繁的更新,因此acme.sh也经常更新以保持同步. 6、NGINX安装证书 sslon; ssl_certificate/usr/local/nginx/conf/ssl/www.domain.cer; ssl_certificate_key/usr/local/nginx/conf/ssl/www.domain.key; ssl_ciphersEECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5; ssl_protocolsTLSv1TLSv1.1TLSv1.2; ssl_prefer_server_cipherson; ssl_session_cachebuiltin:1000shared:SSL:10m; ssl_session_timeout1d; ssl_session_ticketson; |