零基础学会自签SANs证书,适用于hysteria2、trojan-go、cloudflare等各种场景

看了看网上现在很多自签证书的教程,都是东抄西抄,可用性极差。
同样以社区中奖的vps环境为例(debian5)写一个简单可用的教程,理论上linux都能用。

1.生成key,并记住密钥 (输入两遍相同的密钥)

openssl genrsa -des3 -out mydomain.key 2048

2.生成csr (输入key的密钥,然后一直回车即可)

openssl req -new -key mydomain.key -out mydomain.csr

3.删除key的密钥 (输入key的密钥)【mydomain.key.org为原始key文件】

cp mydomain.key mydomain.key.org ; openssl rsa -in mydomain.key.org -out mydomain.key

4.新建mydomain.txt (将文件中 mydomain.com 替换成 你的域名)

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:TRUE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign
subjectAltName = DNS:mydomain.com, DNS:*.mydomain.com
issuerAltName = issuer:copy

5.生成cert证书文件

openssl x509 -req -in mydomain.csr -signkey mydomain.key -out mydomain.crt -days 3650 -sha256 -extfile mydomain.txt

执行完上面的几个步骤,会在当前目录下生成 mydomain.key mydomain.crt 两个文件,至此教程基本上就结束了(当然还可以生成其它格式的证书文件)。

附言:
如果hysteria2想要开启tls,请先参考原始教程 

论坛机器hysteria2从无到有,一建到底。100%可用(理论上debian均适用)

以Just4Fun为例
机器信息 CPU(1核) 内存(216M) 硬盘(5GB)
系统信息 debian5 lxc虚拟化
备注:涉及到的端口号要看自己的实际端口号

从面板 https://www.nodehatch.com/instance/overview 打开实例页面
记住ssh登录命令 ssh -p 21022 root@194.87.2.76
公网IP 194.87.2.76 可用端口号21001-21020

ssh -p 21022 root@194.87.2.76
第一次登录 输入yes 然后再输入密码(密码尽可能先重置一次)

初始化环境

apt update ; apt -y install wget curl cron

设定时区

timedatectl list-timezones | grep "Asia/Shanghai" ; timedatectl set-timezone Asia/Shanghai ; source /etc/profile

下载hysteria2二进制文件

wget https://github.com/apernet/hysteria/releases/download/app/v2.6.0/hysteria-linux-amd64 -O hysteria2 ; chmod +x ./hysteria2

生成服务器证书

openssl genrsa -out hysteria2.key 2048
openssl req -new -x509 -key hysteria2.key -out hysteria2.crt -days 36500

一直回车即可

server.yaml #服务端配置文件

listen: :21001
speedTest: true
tls: 
  cert: hysteria2.crt
  key: hysteria2.key
  sniGuard: disable
auth:
  type: password
  password: abcd1234abcd56780000

client.yaml #客户端配置文件

server: "127.0.0.1:21001"
auth: "abcd1234abcd56780000"
tls:
  insecure: true
http:
  listen: :21002
socks5:
  listen: :21002

server.sh #监测脚本

#!/bin/bash
cd /root
ps aux | grep -F "server.yaml" | grep -v "grep" >/dev/null 2>&1
if [ $? -ne 0 ]; then
    ./hysteria2 server -c server.yaml >/dev/null 2>&1 &
fi
ps aux | grep -F "client.yaml" | grep -v "grep" >/dev/null 2>&1
if [ $? -ne 0 ]; then
    ./hysteria2 client -c client.yaml >/dev/null 2>&1 &
fi

start.sh #启动脚本

#!/bin/bash
while true
do
    sh /root/server.sh
    sleep 10
done

crontab -e #计划任务 前面5个星号

* * * * * sh /root/server.sh

修改启动文件
ln -s /usr/lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
vi /etc/rc.local ; chmod +x /etc/rc.local

#!/bin/bash
sh /root/start.sh &
exit 0

重启服务器
reboot

ssh -p 21022 root@194.87.2.76
登录后,输入
./hysteria2 speedtest -c client.yaml

有如下字样就是成功了
INFO speed test mode
connected to server {“udpEnabled”: true, “tx”: 0}
performing download test
download complete {“bytes”: 104857600, “speed”: “3.10 Gbps”}
download test complete

ps aux 可以看进程
netstat -antu 可以看端口信息

因为是最精简基础教程所以写的比较通俗易懂。
如果以上信息有什么错误,欢迎指正,咱们共同交流共同进步。
附上 完整文档,可以增强调整其它功能。 https://v2.hysteria.network/zh/

,再参考补充教程 

insecure=0实现方法

server.yaml #服务端配置文件
其中 myca.crt myca.key 是你域名的SANs证书文件

listen: :21001
speedTest: true
tls: 
  cert: myca.crt
  key: myca.key
  sniGuard: strict
auth:
  type: password
  password: abcd1234abcd56780000

client.yaml #客户端配置文件
sni填入你的域名,如果是自签名还需要引入ca项

server: "127.0.0.1:21001"
auth: "abcd1234abcd56780000"
tls:
  sni: domain
  ca: myca.crt
  insecure: false
http:
  listen: :21002
socks5:
  listen: :21002

hysteria2需要在客户端引入cert信息,trojan-go可直接使用,cloudflare则需要在面板关闭自签验证。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容