前面说了想要反代GitHub,缓解国内VPS访问GitHub很慢的尴尬情况。
之前用sniproxy实现了这个功能,用起来挺好的,但是要占用443端口,总是不那么方便。
考虑一下用Nginx+自签证书反代吧,搜索了好久,结合了几个教程的内容,自签多域名CA证书成功了,先记录下来。
一、安装openssl
apt-get install -y openssl apt-get install -y libssl-dev
yum install -y openssl yum install -y libssl-dev
二、修改openssl配置文件openssl.cnf
CentOS的在/etc/pki/tls/openssl.cnf
Debian/Ubutnu的在/etc/openssl/openssl.cnf
将其复制一份
mkdir ssl && cd ssl cp /etc/openssl/openssl.cnf . vim openssl.cnf
1. 找到下面这两项,将其取消注释
copy_extensions = copy
req_extensions = v3_req
2. 修改[ v3_req ]代码块
新增一行subjectAltName = @alt_names
3. 新增一个代码块[ alt_names ],DNS.1/2/3写多个域名
[ alt_names ]
DNS.1 = github.com
DNS.2 = *.github.com
DNS.3 = githubusercontent.com
DNS.4 = *.githubusercontent.com
IP.1 = 192.168.1.1
IP.2 = 127.0.0.1
修改完成保存
三、使用配置文件方式生成CA根证书
# 生成CA私钥文件 openssl genrsa -out ca.key 2048 # 使用配置文件方式生成CA根证书 openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 \ -subj "/C=CN/ST=GUANGDONG/L=GUANGZHOU/O=HAODUCK/OU=HAODUCK/CN=127.0.0.1" \ -config ./openssl.cnf -extensions v3_req \ -out ca.crt
查看证书是否支持多域名
openssl x509 -text -in ca.crt -noout
四、使用配置文件方式生成服务器端证书
# 生成服务器私钥文件 openssl genrsa -out server.key 2048 #生成签名请求 openssl req -new -key ./server.key \ -subj "/C=CN/ST=GUANGDONG/L=GUANGZHOU/O=HAODUCK/OU=HAODUCK/CN=127.0.0.1" \ -config ./openssl.cnf -extensions v3_req \ -out server.csr #使用CA证书签名Server端证书 openssl x509 -req -in ./server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -extfile ./openssl.cnf -extensions v3_req \ -days 3650 -sha256 -out server.pem
查看生成的服务器端证书是否支持多域名openssl x509 -text -in server.crt -noout
五、使用证书
1. 客户端安装CA根证书ca.crt
2. Nginx里配置server.crt
和server.key
相关文章
《使用openssl一键自签SSL证书命令》:https://haoduck.com/706.html
《使用sniproxy反代Github的教程》:https://haoduck.com/713.html