我的博客: https://www.seyana.life/post/15


现在已经有很多的免费ssl证书提供商,国内的也有,

不过国内政策要求还要把key给他们,

我们还是用Let’s Encrypt吧。

这里有官方中文文档 ->biubiubiu


官方推荐的是使用Certbot ACME 客户端

但是这里用的是acme.sh

acme.sh是个开源的shell脚本,要更为轻量,对于我的破烂vps还是选择轻量点的吧。

Acme.sh也有中文的简单教程,很详细:-(´▽`)-

关于acme.sh

Acme.sh会在每天 0:00 点自动检测所有的证书,需要更新时会自动更新

acme所有东西都在~/.acme.sh/下面,不会对外造成影响


安装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.h2命令

acme.sh --upgrade   #更新
acme.sh --upgrade  --auto-upgrade     #开启自动更新
acme.sh --upgrade  --auto-upgrade  0   #关闭自动更新

更多更高级的用法在wiki上 wwwww

02-13 23:40