# 使用 BoringSSL

URL: https://caijiao.org/pingora/using_boringssl
Source: docs/pingora/using_boringssl.md
Description: 学习如何在 Pingora 中使用 BoringSSL 提供 HTTPS/TLS 支持，确保请求安全传输。

Pingora 支持使用 **BoringSSL** 提供高性能的 TLS/HTTPS 加密，确保客户端与上游服务器之间的通信安全。

## 配置 TLS

在 Pingora 配置文件中启用 TLS：

```yaml
tls:
  enable: true
  cert: "/etc/ssl/certs/server.crt"
  key: "/etc/ssl/private/server.key"
  min_version: TLS1.2
  max_version: TLS1.3
````

* `cert`：服务器证书路径
* `key`：私钥路径
* `min_version` / `max_version`：TLS 协议版本范围

## BoringSSL 特性

* 高性能的加密库，适合高并发场景
* 支持最新的 TLS 1.3 协议
* 与 OpenSSL API 高度兼容
* 提供安全增强特性，减少已知漏洞风险

## 启用 HTTPS 服务

```rust
let server = Server::new(Some(TlsConfig {
    cert_path: "/etc/ssl/certs/server.crt".into(),
    key_path: "/etc/ssl/private/server.key".into(),
}))?;
server.bootstrap();
server.run_forever(http_proxy_service(None))?;
```

* 初始化服务器时传入 TLS 配置
* Pingora 会自动处理 HTTPS 握手和加密传输

## 高级技巧

1. **证书热更新**：在不中断服务的情况下更新证书
2. **客户端证书验证**：实现双向 TLS（mTLS）
3. **性能优化**：启用 session reuse 或 TLS 0-RTT 加速握手
4. **安全加固**：禁用不安全加密算法，启用强加密套件

---

通过使用 BoringSSL，Pingora 可以提供安全、高性能的 HTTPS 服务，保障请求和数据在传输中的机密性与完整性。
