Micsoftvn
  • 😙Micsoftvn
  • Use Cases
    • For Hacking
      • Kiểm thử mạng
      • Tor - Sock - Proxy
      • Poc
        • POC -draytek-vigor2960 ( CVE-2024-12987 )
    • For Security
      • Security website with htacess file
      • Incident Response
        • Cli AWS - Incident
        • Command line
      • Add basic Authen with Cloudflare
      • Haderning Apache
      • Thiết lập ANTT cho TLS
      • Check network traffic ( Ddos )
      • Tools
        • Tools for AWS
        • Fail2Ban Cheat Sheet
      • Các lỗi thường bảo mật với Websocket
    • For Engineering
      • Thiết lập cấu hình CMD log
      • Cấu hình CLI kết nối đến AWS
      • Sử dụng PET
      • 🔧 Gom Nhóm IP Thành Subnet CIDR Tối Ưu
      • PAC Proxy: Tự Động Cấu Hình Proxy Trong Môi Trường Doanh Nghiệp
      • Sử dụng Podman tạo base images Pentest
      • Tạo YUM Local Repository Trong Container CentOS 7 Sử Dụng Podman
      • Cài Đặt Và Cấu Hình dnsmasq Trên Ubuntu
    • For SysAdmin
      • Scripts
        • Bash Script Gen SSH key
        • Health check System
      • Install Oracle Java JDK 18 in Ubuntu 20.04
      • Run script on startup on Ubuntu 22.04
      • Remove Snap from Ubuntu
      • Config Network on Ubuntu Server
      • View Wifi Network Connection
      • Add user can access network interfaces
      • USB drive with QEMU
      • INSTALL AND MANAGE MULTIPLE JAVA JDK AND JRE VERSIONS ON UBUNTU
      • Export Windows Config
      • Auto Install Openvpn
      • Install Nginx Centos 7 or Docker
      • Install Mkdocs
      • Cheat Sheet
        • Cheat sheet Postgres
      • Cài Đặt Fluent Bit Trên Amazon Linux 2023 & Tạo Repository Offline
      • Lỗi SSL với Curl ( Unsafe legacy renegotiation )
    • Installations
      • Install Helm on Ubuntu
  • Extras
    • Keyboard Shortcuts
Powered by GitBook
On this page

Was this helpful?

  1. Use Cases
  2. For SysAdmin

Lỗi SSL với Curl ( Unsafe legacy renegotiation )

Dưới đây là bài viết blog tổng hợp về lỗi unsafe legacy renegotiation khi dùng curl với TLS, hướng tới chia sẻ cho cộng đồng kỹ thuật hoặc DevOps, SysAdmin:


⚠️ [LỖI CURL] unsafe legacy renegotiation disabled – Nguyên nhân và cách khắc phục với OpenSSL 3

Khi làm việc với các hệ thống sử dụng TLS (HTTPS), bạn có thể gặp lỗi sau khi dùng curl để truy cập một API:

curl: (35) OpenSSL/3.0.x: error:0A000152:SSL routines::unsafe legacy renegotiation disabled

Lỗi này khiến bạn không thể kết nối tới server qua HTTPS, dù API vẫn hoạt động bình thường trên trình duyệt. Vậy chuyện gì đang xảy ra?


🔍 Nguyên nhân: Legacy TLS Renegotiation

TLS "renegotiation" là quá trình client và server đàm phán lại phiên mã hóa giữa chừng. Nhưng trước năm 2010, cơ chế này có một lỗ hổng nghiêm trọng (CVE-2009-3555) cho phép kẻ tấn công chèn dữ liệu vào phiên TLS mà không bị phát hiện.

➡️ Để vá lỗ hổng, RFC 5746 ra đời và định nghĩa lại cách thực hiện renegotiation một cách an toàn.

❗ Tuy nhiên, một số máy chủ cũ vẫn dùng cơ chế legacy renegotiation, không tương thích với chuẩn bảo mật hiện đại.


🔐 OpenSSL 3.x: Không còn cho phép legacy renegotiation

Từ phiên bản OpenSSL 3.0+, chế độ legacy renegotiation bị vô hiệu hóa mặc định vì lý do bảo mật. Điều đó dẫn đến lỗi khi dùng:

curl https://your-api.example.com

💡 Giải pháp tạm thời: Cho phép lại renegotiation một cách có kiểm soát

Bạn có thể bật lại renegotiation tạm thời bằng cách override cấu hình OpenSSL khi gọi curl:

✅ Cách dùng:

OPENSSL_CONF=<(echo -e '[default_conf]\nssl_conf = ssl_sect\n[ssl_sect]\nsystem_default = profile_sect\n[profile_sect]\nOptions = UnsafeLegacyRenegotiation\nMinProtocol = TLSv1.2\nMaxProtocol = TLSv1.2') \
curl --insecure https://your-api.example.com

Giải thích:

Thành phần
Mục đích

Options = UnsafeLegacyRenegotiation

Bật lại renegotiation cũ

Min/MaxProtocol = TLSv1.2

Ép chỉ dùng TLS 1.2

--insecure

Bỏ qua xác thực chứng chỉ nếu cần

⚠️ Không dùng trong production hoặc hệ thống có dữ liệu nhạy cảm. Chỉ dùng để debug/test tạm thời.


✅ Giải pháp lâu dài: Fix từ phía máy chủ

Nếu bạn quản lý máy chủ (ngược lại là client), hãy đảm bảo:

  • Phần mềm web server (Apache/nginx/Java/Tomcat) đã hỗ trợ RFC 5746

  • Tắt hẳn renegotiation nếu không cần thiết:

    SSLInsecureRenegotiation off
  • Nâng cấp phần mềm lên phiên bản mới hỗ trợ secure renegotiation (Apache ≥ 2.2.15, nginx ≥ 1.3...)


🧪 Cách kiểm tra server có hỗ trợ RFC 5746 hay không

openssl s_client -connect your-api.example.com:443

Nếu kết quả có dòng:

Secure Renegotiation IS NOT supported

➡️ Máy chủ đang không hỗ trợ RFC 5746, cần nâng cấp hoặc cấu hình lại.


🛠️ Trường hợp đặc biệt: Palo Alto, F5, HAProxy

  • Nếu kết nối HTTPS đi qua thiết bị trung gian như Palo Alto firewall, bạn cần kiểm tra:

    • Phiên bản PAN-OS (>= 8.1 sẽ hỗ trợ RFC 5746)

    • Chính sách TLS/SSL profile trong cấu hình

  • Tắt hoặc điều chỉnh các chính sách decryption nếu gây lỗi handshake


📌 Kết luận

Tình huống
Cách xử lý

Là client gặp lỗi

Bật lại UnsafeLegacyRenegotiation tạm thời như hướng dẫn

Là server quản lý

Cập nhật phần mềm và bật RFC 5746

Dùng thiết bị trung gian

Kiểm tra SSL/TLS handling của thiết bị


📥 Tham khảo nhanh: Lệnh mẫu

OPENSSL_CONF=<(echo -e '[default_conf]\nssl_conf = ssl_sect\n[ssl_sect]\nsystem_default = profile_sect\n[profile_sect]\nOptions = UnsafeLegacyRenegotiation') \
curl --insecure https://your-api.example.com

👨‍💻 Thực tế với your-api.example.com

  • Server không hỗ trợ RFC 5746

  • Bắt buộc phải dùng legacy renegotiation → gây lỗi với OpenSSL 3.x

  • Chỉ có thể kết nối thành công bằng cách bật UnsafeLegacyRenegotiation tạm thời

PreviousCài Đặt Fluent Bit Trên Amazon Linux 2023 & Tạo Repository OfflineNextInstallations

Last updated 20 hours ago

Was this helpful?