Open siwind opened 3 years ago
我并没有完整按照你的做法完整从 trojan-gfw 到 trojan-go 实验操作,但是从结论来说,自签证书可以在 trojan-go 使用(客户端也为 trojan-go)。但无法按照你生成证书的方法使用。同时我这里的报错提示也和你的不一样。
同时由于我没有在你提供的配置文件中发现有配置 SNI 字段。可能你把对应的功能塞进 Nginx 里而我并不知道。如果没有配置,也请加上。
请尝试按照以下方法生成证书。并将 example.com
替换为自己的域名。
cat > csrconfig.txt <<-EOF
[ req ]
default_md = sha256
prompt = no
req_extensions = req_ext
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
commonName = example.com
countryName = US
[ req_ext ]
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=critical,serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.0 = example.com
EOF
cat > certconfig.txt <<-EOF
[ req ]
default_md = sha256
prompt = no
req_extensions = req_ext
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
commonName = example.com
[ req_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=critical,serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.0 = example.com
EOF
openssl genpkey -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out cert.key
openssl req -new -nodes -key cert.key -config csrconfig.txt -out cert.csr
openssl req -x509 -nodes -in cert.csr -days 365 -key cert.key -config certconfig.txt -extensions req_ext -out cert.crt
感谢回复。 不好意思,这里我漏了一点,就是生成证书时, 输入的域名其实是真实的VPS的IP地址,例如: 12.34.xx.xx。 因为没有时间/精力去申请域名,直接用IP地址代替了。 这样时, 原版的trojan服务端和客户端都是可以使用的,而且没问题~
附浏览器访问时,展示的证书: (域名处为真实的IP地址)
我也发现同样的问题
any update?
原版trojan使用自签名证书(域名为IP地址)是可以正常运行的,但是替换为trojan-go以后会存在如下问题。具体说明如下:
服务端使用原版trojan, 客户端使用原版trojan, 但是基于自签名证书(域名为IP地址)。 功能正常,通过浏览器访问时, 页面内容显示正常,但是会提示“证书不受信任”
服务端替换为trojan-go, 客户端使用原版trojan, 基于自签名证书 trojan客户端网络访问正常, 如果用浏览器访问网站, 页面无法显示。
服务端替换为trojan-go, 客户端替换为trojan-go, 基于自签名证书 trojan客户端 无法访问网络(提示证书错误),如果用浏览器访问网站,页面无法显示。
服务器和客户端环境信息
服务器Centos8, trojan, trojan-go, nginx(以root用户运行) 客户端: windows10.
附trojan配置文件:
自签名证书生成:
trojan配置文件
客户端config.json:
服务端config.json:
服务端和客户端日志
客户端日志:
服务端日志: