TL;DR

Ngày 20/4/2026, GitHub chính thức thông báo sunset SHA-1 trong HTTPS/TLS trên github.com và các CDN đối tác. Mốc dứt điểm: 15/9/2026. Trước đó, một đợt brownout 18 tiếng từ 00:00–18:00 UTC ngày 14/7/2026 sẽ tạm khoá SHA-1 để lộ diện các client chưa tương thích. Trình duyệt hiện đại, API client, và Git chạy HTTPS trên môi trường mới hoàn toàn không bị ảnh hưởng — chỉ các stack cũ (JDK 7, OpenSSL <1.0.1, proxy enterprise cấu hình cứng) mới cần chuẩn bị.

Điều gì vừa được thông báo

GitHub sẽ dừng chấp nhận chữ ký TLS dùng SHA-1 (ví dụ rsa_pkcs1_sha1, ecdsa_sha1) trong quá trình handshake. Thay đổi áp dụng cho cả ba mặt trận traffic HTTPS: trình duyệt web, REST/GraphQL API, và Git-over-HTTPS.

Phạm vi ảnh hưởng gồm github.com, GitHub Enterprise Cloud, GitHub Enterprise Cloud with Data Residency, và các partner CDN. Bản GitHub Enterprise Server tự host không bị đụng vào — admin tự quản lý TLS stack của mình.

Lưu ý quan trọng: brownout ngày 14/7 chỉ áp cho origin, không áp cho CDN. Nghĩa là trong 18 tiếng đó, tải asset qua CDN vẫn bình thường, nhưng mọi lệnh git push, git clone qua HTTPS, hay gọi API sẽ fail nếu client chỉ biết ký SHA-1.

Vì sao chuyện này quan trọng

SHA-1 đã thủng từ lâu. Lý thuyết va chạm xuất hiện từ 2005, và năm 2017 Google công bố SHAttered — tấn công va chạm thực tế đầu tiên. NIST formally deprecate SHA-1 từ 2011 và đặt mục tiêu dứt điểm trước 2030. IETF ra RFC 9155 deprecate SHA-1 trong TLS signatures. GitHub chỉ đang hoàn tất một nghĩa vụ vệ sinh mật mã đã trễ nhiều năm.

Về bề mặt rủi ro: giữ SHA-1 trong handshake mở cơ hội cho downgrade attack — attacker MITM có thể ép client-server chọn thuật toán yếu, rồi forge chữ ký. Cắt SHA-1 là cắt một bậc tụt có giá trị.

Technical facts — mốc và phạm vi

MốcThời điểm (UTC)Hiệu ứng
Thông báo20/4/2026Changelog + nhắc nhở client test sớm
Brownout14/7/2026, 00:00–18:00SHA-1 bị disable ở origin trong 18h; CDN vẫn chạy
Cắt hẳn15/9/2026SHA-1 bị xoá sổ khỏi github.com + partner CDN
Đã liveHiện tạigithub.dev đã không còn SHA-1 — dùng làm probe

Phạm vi: HTTPS/TLS handshake. Không liên quan đến hash SHA-1 mà Git dùng nội bộ cho commit ID — đó là câu chuyện khác (Git đang có migration song song sang SHA-256 object format).

So với các đợt deprecate cũ

Đây không phải lần đầu GitHub dọn dẹp crypto. Ngày 1/2/2018 họ đã khai tử TLSv1/1.1 và các Diffie-Hellman group yếu (diffie-hellman-group1-sha1, diffie-hellman-group14-sha1). Khi đó ~95% HTTPS traffic đã chạy TLS 1.2 nên tác động rất nhỏ.

So với SSH SHA-1 deprecation (tháng 3/2022, khi GitHub ngắt ssh-rsa ký SHA-1), đợt HTTPS này chạm đến nhiều người hơn — gần như mọi dev và mọi CI — nhưng ít exotic client hơn, vì trình duyệt tự cập nhật.

Ai cần hành động, ai không

  • Không cần làm gì: Chrome/Firefox/Safari/Edge bản current, macOS 12+, Windows 11, Linux distro còn support, Git ≥ 2.40, Node 18+, Python 3.10+ với OpenSSL ≥ 3.0.
  • Kiểm tra ngay: CI runner cũ chạy JDK 7 hoặc OpenSSL 1.0.0; script dùng Python 2.7; container Alpine cũ bám OpenSSL 1.0.1; enterprise proxy TLS cấu hình signature_algorithms whitelist.
  • Cách test: trỏ client vào https://github.dev — endpoint này đã tắt SHA-1. Handshake thành công = bạn qua cửa. Fail = vá trước 14/7.

Limitations & lưu ý

Không có option gia hạn. 15/9/2026 là hard cutoff. Bản GitHub Enterprise Server (on-prem) không trong phạm vi — admin tự quyết. GitHub không công bố thuật toán “thay thế” cụ thể, chỉ nói “modern TLS algorithms”; thực tế là các signature scheme dựa trên SHA-256 / SHA-384 vốn đã là mặc định trong TLS 1.2+.

Không có pricing impact, cũng không yêu cầu đổi Personal Access Token hay xoay lại SSH key.

What’s next — checklist 5 bước

  1. Probe ngay hôm nay: chạy curl -v https://github.dev từ mọi CI runner và workstation cũ. Nếu handshake fail, bạn đã tìm ra client cần vá.
  2. Upgrade Git lên ≥2.40, kèm refresh TLS backend của OS.
  3. Vá runtime CI: JDK, OpenSSL, Python, Node image. Đặc biệt các base image Alpine/Ubuntu 16.04 cũ.
  4. Review enterprise proxy: bất kỳ policy TLS nào pin cứng signature_algorithms — allow SHA-256 + SHA-384.
  5. Dùng brownout 14/7 như fire drill: nếu một integration fail trong 18h đó, bạn còn 2 tháng để fix trước 15/9.

Nguồn: GitHub Changelog, GitHub Engineering Blog, RFC 9155.