本文最后更新于 396 天前,其中的信息可能已经有所发展或是发生改变。
aria2后端rpc设置ssl证书踩的坑
用nginx反向代理ariaNG前端时,连接后端rpc服务时要求协议必须为https或者ws,由于aria2前端后端放在同一台vps上,在反向代理rpc服务时遇到一些麻烦,最后找到的解决办法是增加一个location块:
location ^~ /jsonrpc {
proxy_http_version 1.1;
add_header Front-End-Https on;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6800/jsonrpc;
proxy_pass_header X-Transmission-Session-Id;
}
最终的nginx配置如下:
server {
listen 443 ssl http2;
listen [::]:443 http2;
ssl_certificate /<path>/.crt;
ssl_certificate_key /<path>/.key; #<path>换成你自己域名的证书文件路径
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
server_name xxx.com; #自行替换域名
index index.html index.htm;
# Config for 0-RTT in TLSv1.3
ssl_early_data on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000";
location ^~ /jsonrpc {
proxy_http_version 1.1;
add_header Front-End-Https on;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6800/jsonrpc;
proxy_pass_header X-Transmission-Session-Id;
}
location /
{
proxy_pass http://127.0.0.1:6880; # 转发规则
proxy_set_header Host $proxy_host; # 修改转发请求头,让6080端口的应用可以受到真实的请求
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Config for 0-RTT in TLSv1.3
proxy_set_header Early-Data $ssl_early_data;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 80;
listen [::]:80;
server_name xxx.com; #换成你自己的域名
return 301 https://xxx.com$request_uri;#同上
}
同时aria2配置文件也要进行相应的修改,首先把证书文件上传到aria2配置文件的同级文件夹,然后修改如下:
# 启用加密后必须使用 https 或者 wss 协议连接
# 不推荐开启,建议使用 web server 反向代理,比如 Nginx、Caddy ,灵活性更强。
rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件(.pem/.crt)
rpc-certificate=/<path>/.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件(.key)
rpc-private-key=/<path>/.key
其中path替换成你的配置文件路径以及修改正确的证书名称
注意
证书文件一定要为.pem格式,本人亲测.crt格式会有莫名奇妙的错误导致前端连不上后端rpc服务,这个导致我花了很多额外的时间
将.crt的ssl证书文件转换成.pem格式
openssl x509 -in hoshibu.crt -out hoshibu.pem
重启nginx后打开ariaNG前端页面,在ariaNG设置那里填上你反向代理的域名+端口6800+后面默认的jsonrpc就能链接上了。(截图以后补)
使用acme签发zerossl证书的坑
简单来说,更换vps后之前的EABKEY就不能用了,在https://app.zerossl.com/developer重新申请EABKEY,然后设置:
acme.sh --register-account --server zerossl \
--eab-kid 你的eab-kid \
--eab-hmac-key 你的eab-hmac-key
然后就能签发证书了。(截图以后一定补)