前言
突然发现我的网站没有SSL
,作为一个职业前端人,我得有,而且我得会弄,之前上学那会儿有用宝塔一键部署过,感觉应该不会很复杂。
目标以及问题
- 白嫖
- 不想总手动更新,因为我懒
- 安装&配置过程不要太复杂
得到的结果
acme.sh
可以达到我的要求
安装 acme.sh
curl https://get.acme.sh | sh -s email=自己的邮箱 复制代码
生成证书
生成证书的方式有两种http
&& DNS
,因为DNS
需要去解析一条记录,我很懒,懒得去解析,所以我没试DNS
,以后想起来再试试。
懒是一方面原因,个人感觉http
方式更香,引用官方一句话:
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.
简单,好操作,开始操作:
acme.sh --issue -d 网站地址 --webroot 网站根目录 复制代码
安装证书
在nginx
的目录下新建一个ssl_cert
目录存放证书
acme.sh --install-cert -d 网站地址 \ --key-file /usr/local/nginx/ssl_cert/xxxxx/key.pem \ --fullchain-file /usr/local/nginx/ssl_cert/xxxxx/cert.pem \ 复制代码
此时ssl_cert/xxxxx
目录下会生成两个文件key.pem
& cert.pem
nginx 配置
server { listen 80; server_name blog.ishometown.com; rewrite ^(.*)$ https://$host$1 permanent; // http -> https } server { listen 443; server_name blog.ishometown.com; # 证书 ssl_certificate /usr/local/nginx/ssl_cert/xxxx/cert.pem # key ssl_certificate_key /usr/local/nginx/ssl_cert/xxxx/key.pem location / { root /data/app/blog; index index.html index.htm; } } 复制代码
完结