前言
突然发现我的网站没有SSL
,作为一个职业前端人,我得有,而且我得会弄,之前上学那会儿有用宝塔一键部署过,感觉应该不会很复杂。
目标以及问题
- 白嫖
- 不想总手动更新,因为我懒
- 安装&配置过程不要太复杂
得到的结果
acme.sh
可以达到我的要求
安装 acme.sh
代码语言:javascript复制curl https://get.acme.sh | sh -s email=自己的邮箱
生成证书
生成证书的方式有两种http
&& DNS
,因为DNS
需要去解析一条记录,我很懒,懒得去解析,所以我没试DNS
,以后想起来再试试。
懒是一方面原因,个人感觉http
方式更香,引用官方一句话:
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.
简单,好操作,开始操作:
代码语言:javascript复制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 配置
代码语言:javascript复制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;
}
}
完结