如今已经有不少的免费ssl证书提供商,国内的也有,nginx
不过国内政策要求还要把key给他们,git
咱们仍是用Let’s Encrypt吧。github
这里有官方中文文档 ->biubiubiuweb
官方推荐的是使用Certbot ACME 客户端shell
可是这里用的是acme.shapache
acme.sh是个开源的shell脚本,要更为轻量,对于个人破烂vps仍是选择轻量点的吧。dom
Acme.sh也有中文的简单教程,很详细:-(´▽`)-
curl
Acme.sh会在天天 0:00 点自动检测全部的证书,须要更新时会自动更新post
acme全部东西都在~/.acme.sh/
下面,不会对外形成影响优化
curl https://get.acme.sh | sh
能够设置别名,否则命令太长了alias acme.sh=~/.acme.sh/acme.sh
能够本身设置
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
nginx/apache能够自动获取域名
acme.sh --issue -d mydomain.com --apache acme.sh --issue -d mydomain.com --nginx
使用nginx模式在安装过程当中遇到错误
[Mon Mar 2 15:42:33 UTC 2020] Can not find conf file for domain seyana.life [Mon Mar 2 15:42:33 UTC 2020] Please add '--debug' or '--log' to check more details.
这是由于在nginx中,我配置server_name 为localhost
server_name localhost
acme.h是根据这个获取域名的,因此会出错,须要为绑定的域名
设置好后从新运行就成功了。
用提供的命令能够一次把证书和key复制到指定目录
acme.sh --installcert -d www.xxxxx.come \ --key-file /root/ssl/key/key.pem \ --fullchain-file /root/ssl/cert/cert.pem \ --reloadcmd "service nginx force-reload"
不建议把证书留在~/.acme.sh/中,
关于配置,不提供自动配置,须要本身配置
下面是nginx的443配置例子
server { listen 443 ssl; server_name www.xxx.com xxx.com;#域名 ssl_certificate /root/ssl/cert/cert.pem;#证书路径 ssl_certificate_key /root/ssl/key/key.pem;#key路径 #... }
以后能够用301永久重定向把http 的80端口也转发到443上
rewrite ^/(.*)$ https://www.****.com/$1 permanent;
这样即便用http访问也会跳转到https上,固然这样的转换方式仍然存在风险,能够开启HSTS固定访问https等措施,具体仍是留到https优化里把。
小锁锁get√
acme.sh --upgrade #更新 acme.sh --upgrade --auto-upgrade #开启自动更新 acme.sh --upgrade --auto-upgrade 0 #关闭自动更新
更多更高级的用法在wiki上 wwwww