1037 Commits

Author SHA1 Message Date
avwo f0a4f0ec47 refactor: refine code 2026-10-11 20:27:49 +08:00
avwo f7c87f3b37 feat: enable://useSniAsTunnelDomain 2026-10-11 11:39:47 +08:00
avwo 2ab4290e72 refactor: refine code 2026-10-03 12:21:15 +08:00
avwo ca15b3f3a4 fix: https://github.com/avwo/whistle/pull/1351 2026-09-12 09:11:24 +08:00
avwo 91daac147a fix: https://github.com/avwo/whistle/issues/1360 2026-09-12 09:10:07 +08:00
avwo 32f8beb0d7 refactor: refine code 2026-09-05 15:06:24 +08:00
avwo 1c2d7c7f3a refactor: refine code 2026-07-25 16:00:14 +08:00
avwo 7a98094d5a perf: optimize performance 2026-07-11 13:23:17 +08:00
avwo 26b7850c95 refactor: refine code 2026-06-21 17:17:14 +08:00
avwo 7512f21acc feat: add test rules function 2026-06-19 00:49:39 +08:00
avwo 777bcf69ba feat: handle client/server sent events 2026-06-14 13:36:19 +08:00
Frank 14a9407b4a fix: add authorityKeyIdentifier extension to fix Python SSL verification error
## 问题描述

Python 3.13+ 配合 urllib3 2.6.3 使用 Whistle 作为 HTTPS 代理时,SSL 证书验证失败:

```
urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed: Missing Authority Key Identifier
```

## 根本原因

OpenSSL 3.x 和 Python 的 urllib3 对证书链验证更加严格。Whistle 动态生成的服务器证书只包含 `subjectAltName` 扩展,缺少 `authorityKeyIdentifier` 等必要扩展。

## 解决方案

为生成的证书添加完整的 X.509v3 扩展:
- `basicConstraints` (CA:FALSE)
- `keyUsage` (digitalSignature, keyEncipherment)
- `extKeyUsage` (serverAuth, clientAuth)
- `authorityKeyIdentifier` (从 ROOT_CRT 的 SKI 获取)

## 测试环境

- Python 3.13.5
- urllib3 2.6.3
- OpenSSL 3.5.5
- Node.js v24.14.0
- Whistle v2.10.2

此修复确保 Python 严格的 SSL 验证在使用 Whistle 进行 HTTPS 抓包时能够正常通过。
2026-03-31 15:26:04 +08:00
avwo 40a892cfb0 refactor: refine code 2026-03-21 22:37:04 +08:00
avwo b67ec50a0d refactor: refine code 2026-02-07 22:15:56 +08:00
avwo 007df8395e feat: allow disable custom certs 2026-02-01 23:29:45 +08:00
avwo 6ff4b95c7c refactor: refine code 2026-02-01 20:28:08 +08:00
avwo c4740f3ef2 refactor: refine code 2026-01-31 07:41:12 +08:00
avwo 5c808c7748 refactor: refine code 2026-01-10 00:27:21 +08:00
avwo c0812345a5 refactor: refine code 2025-12-27 00:07:12 +08:00
avwo d5007f3cd9 refactor: refine code 2025-12-21 21:53:22 +08:00
avwo 10f7c7730f fix: https://github.com/avwo/whistle/issues/1081#issuecomment-3500994521 2025-11-09 22:57:39 +08:00
avwo cc12e4e669 refactor: refine code 2025-09-14 23:10:09 +08:00
avwo c8b37391d9 feat: xxxFilter://chance:0.5 & handle EPROTO 2025-08-23 00:35:03 +08:00
avwo 7415f6005b refactor: refine code 2025-08-09 16:26:22 +08:00
avwo e92d902baa fix: https://github.com/avwo/whistle/issues/1200 2025-06-21 23:01:05 +08:00
avwo 9f5cbfedb4 refactor: refine code 2025-06-14 00:06:05 +08:00
avwo 1b77a5d59c feat: install plugins 2025-05-31 07:59:12 +08:00
avwo 6b619613f6 refactor: refine code 2025-05-01 11:07:50 +08:00
avwo c3839a4d90 feat: install plugins 2025-04-03 19:43:47 +08:00
avwo 249ec32748 feat: refine http2 settings 2025-04-03 19:43:07 +08:00
avwo c2282bf8b7 fix: https://github.com/avwo/whistle/pull/1192 2025-01-20 18:15:00 +08:00
avwo 53ec0394ce refactor: refine code 2025-01-13 20:35:35 +08:00
avwo eae6ce353d fix: https://github.com/avwo/whistle/pull/1192 2025-01-13 20:35:02 +08:00
avwo 6854677161 feat: set server.requestTime = 0 2024-12-23 20:01:49 +08:00
avwo 92f72eb5b8 feat: disable://keepH2Session 2024-12-06 22:40:54 +08:00
avwo aa4af22135 fix: https://github.com/avwo/whistle/issues/1173 2024-12-06 22:19:10 +08:00
avwo 7be53e28bd fix: https://github.com/avwo/whistle/issues/1081 2024-12-06 20:27:32 +08:00
avwo f91f572a51 feat: delete://reqBody.xxx|resBody.xxx 2024-11-15 22:56:50 +08:00
avwo 1140b7aaf9 feat: add composer tag 2024-10-12 00:09:30 +08:00
avwo 0d0b2c54ec feat: refine capture ip request 2024-09-21 00:32:32 +08:00
avwo 99fac19daf feat: join ip&port 2024-08-31 22:59:43 +08:00
avwo 9c2c4d1607 feat: enable://captureIp 2024-08-03 00:42:44 +08:00
avwo aa3850adb9 feat: refine https request by ip 2024-08-03 00:14:58 +08:00
avwo 2fccd78e82 fix: captureError 2024-07-26 20:58:21 +08:00
avwo 985f2dc48a feat: allow to update root ca 2024-07-19 21:58:51 +08:00
avwo d79d8549cb feat: delete://query.xxx 2024-06-10 01:13:49 +08:00
avwo e19218d244 feat: add SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 2024-04-22 22:36:02 +08:00
avwo 7db11ba428 feat: enable://abortRes 2024-04-04 00:33:31 +08:00
avwo d3c613e4cf feat: enable://requestWithMatchedRules enable://responseWithMatchedRules 2024-03-22 21:27:56 +08:00
avwo 6b3fa21be4 feat: disable://captureHttp disable://captureHttps 2024-03-10 23:39:04 +08:00