生成自签发证书
要做ssl代理必须要有证书,很多人会从第三方认证机构购买,有些人会直接使用lets encrypt的免费证书,但因为我们只是服务端通信用,所以不必要使用权威认证机构签发的证书,自己签发一个就行,参考了下面这篇文章生成自签发证书
https://zonena.me/2016/02/creating-ssl-certificates-in-3-easy-steps/
生成使用ed25519加密算法的证书,第一行生成密钥,第二行生成证书
openssl ecparam -out /etc/ssl/private/ss1-@R_404[email protected] -name prime256v1 -genkey
openssl req -new -days 3650 -nodes -x509 \
-subj "/C=US/ST=Denial/L=Springfield/O=dis/CN=www.example.com" \
-key /etc/ssl/private/ss1-@R_404[email protected] -out /etc/ssl/certs/ss1-@R_404[email protected]
重新编译@R_404_5171@
因为要到@R_404_5171@ 1.9之后才开始支持tcp代理,所以如果要用这个功能必须要使用高版本@R_404_5171@,如果有docker镜像是最好的,没有的话就得自己重新编译,具体编译步骤如下,我用的是archlinux,所以我下了我本地版本的@R_404_5171@,然后使用了如下的编译选项,--with-stream
,--with-stream_ssl_module
这2个选项必须要有
wget https://nginx.org/download/nginx-1.16.0.tar.gz
tar zxf @R_404[email protected]
cd @R_404[email protected]
./configure \
--sbin-path=/usr/bin/@R_404_5171@ \
--conf-path=/etc/@R_404_5171@/@R_404[email protected] \
--pid-path=/var/run/@R_404[email protected] \
--with-http_ssl_module \
--with-stream \
--with-stream_ssl_module
make && make install
配置@R_404_5171@
总的来说就是2台服务器,前面的这台服务器叫反向代理服务器,后面的这台叫作上游服务器,为了安全起见反代和上游服务器之间的数据报要加密,所以引入一个ssl来给tcp包一层
以下是反代服务器的配置
stream {
upstream backend {
server 129.181.12.5:92345 weight=1 max_fails=3 fail_timeout=10s;
server 129.181.12.6:92345 weight=2 max_fails=3 fail_timeout=5s;
}
server {
listen 12345;
proxy_pass backend;
proxy_ssl on;
proxy_ssl_certificate /etc/ssl/certs/@R_404[email protected];
proxy_ssl_certificate_key /etc/ssl/private/@R_404[email protected];
}
}
配置很显然,指定了证书和密钥的位置,指定了上游服务的ip端口,指定了2个服务的权重,意思就是本机的12345收到请求(非ssl加密),再经过ssl加密后转到后面的2台服务器的92345端口
接下来配置上游服务器,也需要用到@R_404_5171@,还要用到相同的证书进行解密
stream {
upstream backend {
server 127.0.0.1:8598;
}
server {
listen 92345 ssl;
proxy_pass backend;
ssl_certificate /etc/ssl/certs/@R_404[email protected];
ssl_certificate_key /etc/ssl/private/@R_404[email protected];
}
}
这个配置也很好理解,监听92345端口,并且只接受ssl加密后了连接,收到请求后拿配置在证书和密就进行解密,解密完后把数据转发给后的的8598应用,一加密一解密,中间谁也不知道传了什么数据,除非攻击者厉害到能破解ecc算法,建议走外网的代理都使是ssl加密再传,提高安全性
需要注意这2个stream配置都要放到@R_404[email protected]
,千万别放到sites-available
这种地方,不然就会进入到http
部分
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。