想给自己的gogs加个证书,现在 let’s entrypt 这么流行,而且免费,所以就用它了!
搜了一下发现可以又很多工具可以很方便地生成证书,搜了一下,选中了acme.sh
步骤如下:
首先,git clone 获取脚本
1
| git clone https://github.com/Neilpang/acme.sh.git
|
let‘s entrypt 需要验证域名所有权,有好几种方式,有验证文件的,也有验证dns的。
gogs验证文件不太方便,所以使用验证dns的方法
1
| acme.sh --issue --dns -d yourdomain.com
|
之后它会提示让你设置一下子域名的txt记录,设置好之后,运行下面的命令
1
| acme.sh --renew -d yourdomain.com
|
之后它就会自动生成证书,告诉你放在什么地方。
那么nginx怎么使用呢?
首先,生成ssl_certificate
1 2
| # 文件路径已省略,需要自己补上 cat yourdomain.com.key fullchain.cer > fullchain.pem
|
之后在nginx的配置文件中加上以上配置就可以了:
1 2
| ssl_certificate path/to/fullcain.pem; ssl_certificate_key path/to/yourdomain.com.key;
|
nginx虚拟主机配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| upstream gogs { server 127.0.0.1:3000 weight=1; } server { listen 443; server_name yourdomain.com; ssl on; ssl_certificate path/to/fullcain.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不需要配置。