给 gogs 加上 let's entrypt 证书
想给自己的gogs加个证书,现在 let's entrypt 这么流行,而且免费,所以就用它了!
搜了一下发现可以又很多工具可以很方便地生成证书,搜了一下,选中了acme.sh
步骤如下:
首先,git clone 获取脚本
git clone https://github.com/Neilpang/acme.sh.git
let‘s entrypt 需要验证域名所有权,有好几种方式,有验证文件的,也有验证dns的。
gogs验证文件不太方便,所以使用验证dns的方法
acme.sh --issue --dns -d yourdomain.com
之后它会提示让你设置一下子域名的txt记录,设置好之后,运行下面的命令
acme.sh --renew -d yourdomain.com
之后它就会自动生成证书,告诉你放在什么地方。
那么nginx怎么使用呢?
首先,生成ssl_certificate
# 文件路径已省略,需要自己补上
cat yourdomain.com.key fullchain.cer > fullchain.pem
之后在nginx的配置文件中加上以上配置就可以了:
ssl_certificate path/to/fullchain.pem;
ssl_certificate_key path/to/yourdomain.com.key;
nginx虚拟主机配置文件如下:
upstream gogs {
server 127.0.0.1:3000 weight=1;
}
server {
listen 443;
server_name yourdomain.com;
ssl on;
ssl_certificate path/to/fullchain.pem;
ssl_certificate_key path/to/yourdomain.com.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://gogs;
}
}
如果需要强制https可以见这里
当然也可以启用HSTS, 见这里 和 这里
注意
gogs 本身有配置证书的地方,但是如果要通过 nginx 访问 gogs的话,证书是需要在nginx配置的,gogs不需要配置。
1 comment
To fill this form if you wanna discuss.
新技能GET!
我一直是在用官方那个python工具