YWW
YWW
发布于 2025-08-02 / 12 阅读
0
0

网络和地址转发

如何将http访问改成https的安全访问 :

先了解预备知识:https和http有何区别?

(1)默认情况,http监听80端口,https监听443端口。想要通过https访问,需要开放443端口

(2)http是明文传输,https为加密传输(TLS/SSL),我需要一个带有签名的安全证书才能使用https访问

https为tls/ssl协议(tcp协议之上),使用混合加密方式

这里公钥/私钥(RSA加密算法等)用非对称加密,用于身份认证,对称加密RES单个私钥用于传输数据

在这个.pem证书文件中,公钥在服务器的SSL证书中,发给所有的访问者;私钥由我们自己保管

(3)数据传输(握手)过程【加密解密】:

访问网站后,服务端返回一个包含RSA公钥的ssl证书-->【浏览器验证证书成功后,提取出公钥】

浏览器生成一个随机密钥K用于传数据,然后用公钥加密这个K发送给服务器【这里加密K用的非对称加密RSA】

服务器用私钥解密,取到K【这里是非对称解密:RSA解密】,后续通信就用这个K

服务器<---->浏览器传数据,用对称加密解密

【加密/解密数据 = AES_encrypt(K, 原始数据/加密数据) 】

关键: 公钥/私钥都是服务器的,公钥由服务器公开,每个用户访问都生成一个自己的会话密钥K【传数据】用服务器的公钥加密。

服务器用自己的私钥解密公钥,获取会话内容。

所有人用的都是同一个公钥,但是会话密钥K不同【每个人的浏览器生成的】,别人是解密不了的,因为他们没有这个独立的会话密钥K

获取会话密钥是非对称加密/解密(RSA)

后续用这个密钥K通信传数据用 对称加密算法(AES),因为都是用这个K加密解密

那么怎么转换成https

第一步:申请安全证书,证书中有一套密钥,通过certd实现流水线证书申请:申请-部署服务器-重启

certd部署直接按照官网文档操作:快速开始 | 开源SSL证书管理工具,证书自动化申请部署,让你的网站证书永不过期
【这里需要docker镜像:先把docker 和 docker compose 装好在服务器,网络问题可以装一个vpn: v2raya 】

【用docker-compose 拉取镜像部署certd,需要阿里云的加速源:自己的账号下有独立的加速镜像,用这个可以成功拉取docker-compose】

第二步:启动自己的服务/镜像, 配置nginx,监听443端口并转发服务到指定端口号下

有了自己的域名,如何在一个域名下部署多个服务?

解决:在地址中添加前缀:xxx.yourdomain.top ,然后将请求转发到这个地址

nginx配置示例如下:

server {
    listen 443 ssl;
    server_name xxx.your-domain.top; # 前缀.你的域名
    ssl_certificate /usr/share/nginx/html/cert/cert.pem; # 你地址下的证书
    ssl_certificate_key /usr/share/nginx/html/cert/cert.key;

    location / {
        proxy_pass http://localhost:8090;  # 容器主机
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

监听443端口,添加证书和密钥,并将请求转发到指定的端口下即可【注意在安全组放行指定端口】

这里需要开放泛域名:添加 访问地址 *.your-domain.top

certd配置

服务器DNS解析:

补充:http状态码和重定向

常见状态码:

成功响应 2XX 【200 OK,204 成功但没有返回值,206 请求部分资源,返回请求的部分内容】

重定向 3xx【301 永久移动到新的URL(用新的url),临时移动,使用原有的url】

客户端错误响应 4XX【400 请求报文语法错误,401 需要认证或认证失败,403 请求被拒绝 , 404 找不到请求的资源】

服务器错误5XX【500 服务器处理发生错误 , 503 无法处理请求(服务器维护)】

301和302区别 301:永久重定向

Localcation字段为重定向后的位置;request URL字段是请求资源的旧位置

302:临时重定向 请求资源临时转移到某个新的url(适合这里设置过期时间防盗刷的场景)

只有在资源位置24到48小时内临时转移时,才可以使用302重定向

应用场景:用相对路径重定向到完整的路径,进行资源获取【OSS存储的文件等】


评论