最近重新部署 UnblockNeteaseMusic 的时候发现新版客户端需要自签证书才能代理了,不然会出现连接错误。我选择的部署方式是比较方便的 Docker 部署,其默认使用的证书是由开发者生成的 CA 签名的证书,想要使用就需要导入开发者的 CA 证书。虽然我并非不信任开发者,但是同时也很难想象开发者能做到和真正 CA 同级别对私钥的保护,所以最好的方式还是自己生成一个 CA 进行签名,然后直接把 CA 私钥删除(反正这个 CA 这辈子也就只签这么一个证书)防止盗用。我使用的方法是直接在 Docker 中生成新的证书,您也可以选择其他方法替换证书,具体实现手段可以看各自需求而定。
然后我们需要来到证书的存放目录 /app/。Shell 的默认目录应该就是这里,如果不是可以手动切换过来。然后我们需要生成新的 CA 以及用 CA 签发一个新的服务器证书。您可以直接将以下代码保存为 gencert.sh 然后运行 sh gencert.sh 来自动完成所有步骤。值得注意的是,这个脚本会在生成完证书之后删除 CA 私钥来缓解 CA 私钥泄露造成 MITM 的风险。
#!/bin/sh
# Install OpenSSLapk add openssl
# Generate the CA private keyopenssl ecparam -genkey -name secp384r1 -out ca.key
# Generate the CA certificateopenssl req -x509 -new -nodes -key ca.key -sha384 -days 3650 -subj "/C=CN/CN=UnblockNeteaseMusic Root CA/O=nobody" -out ca.crt
# Generate the server private keyopenssl ecparam -genkey -name secp384r1 -out server.key
# Create a configuration file for the requestcat <<EOF >req.conf
[req]
distinguished_name=dn
[dn]
C=CN
L=Hangzhou
O=NetEase (Hangzhou) Network Co., Ltd
OU=IT Dept.
CN=*.music.163.com
[ext]
subjectAltName=@alt_names
[alt_names]
DNS.1=music.163.com
DNS.2=*.music.163.com
EOF# Generate the server Certificate Signing Request (CSR)openssl req -new -key server.key -subj "/C=CN/L=Hangzhou/O=NetEase (Hangzhou) Network Co., Ltd/OU=IT Dept./CN=*.music.163.com" -out server.csr -config req.conf -reqexts 'ext'# Generate the server certificate using the CAopenssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha384 -extensions 'ext' -extfile req.conf
echo"Successfully created certificates"# Remove redundant files, including the CA keyrm req.conf server.csr ca.srl ca.key
最后我们需要在宿主机上重启服务来让服务使用新生成的证书:
1
sudo docker restart unblocknetease
0x03 客户端配置
生成完毕之后我们需要将 ca.crt 的内容复制出来并保存到终端设备上。随后,以 Windows 为例,我们可以双击打开证书的详细页面,点击 Install Certificate... 打开证书安装向导,选择 Current User 仅为当前用户安装(因为没必要全局安装),然后点 Next 进入下一步。
随后我们需要手动选择证书安装的位置,选择第二项 Place all certificates in the following store,选择 Trusted Root Certification Authorities,然后选择确定,点击 Next 进入最后一步。最后点击 Finish 并且确认接下来的对话框来完成安装。
最后我们需要在网易云音乐客户端内设置 HTTP 代理地址为刚刚配置好的服务的 IP 和端口,点击确定套用配置,客户端重启完之后应该就可以正常使用了。其他平台的配置可参考官方文档。
- https://k4yt3x.com/%E4%B8%BA-unblockneteasemusic-docker-%E6%9C%8D%E5%8A%A1%E7%94%9F%E6%88%90%E8%87%AA%E5%B7%B1%E7%9A%84%E8%AF%81%E4%B9%A6/ - 2019-2024 K4YT3X. All rights reserved.