DST Root CA X3 hết hạn vào ngày 30/09 |
Một chứng chỉ kỹ thuật số được sử dụng rộng rãi để xác minh kết nối Internet an toàn sẽ hết hạn vào ngày 30/9 và hàng triệu thiết bị cũ sẽ không thể cập nhật để cài đặt chứng chỉ mới hơn. Chứng chỉ này có tên DST Root CA X3, do Let’s Encrypt phát hành
Máy Mac, Win XP, iPhone cũ, máy chơi game PlayStation 3, Nintendo 3DS cùng hàng loạt TV thông minh, set-top box và các thiết bị thông minh khác, kể cả một số chiếc PlayStation 4 có thể bị mất kết nối Internet trong tuần tới.
Dĩ nhiên còn vô vàn dịch vụ chạy trên nền tảng này cũng sẽ bị ảnh hưởng nếu NCC không kịp cập nhật, Cuối năm 2020, người ta ước tính 1/3 số điện thoại Android trên thị trường có thể bị biến thành "cục gạch" trong ngày 30/9.
Bạn cần làm gì?
May mắn cho người dùng các thiết bị Android cũ là một giải pháp đã được đưa ra để các thiết bị đó có thể hoạt động đến tháng 9/2024, miễn là máy chạy Android 2.3.6 Gingerbread trở lên. Sau năm 2024, thiết bị Android sẽ cần cập nhật phiên bản hệ điều hành thấp nhất là 7.1.1 Nougat.
Tuy nhiên, với máy Mac chạy macOS 10.12.0 trở xuống, iPhone và iPad chạy iOS 9 trở xuống hay PlayStation 4 chạy bản firmware thấp hơn 5.00 cũng như PC chạy Windows CP Service Pack 2 thì mọi chuyện không được may mắn như thế. Tất cả các thiết bị kể trên sẽ bị ảnh hưởng.
Nếu bạn sở hữu một trong các thiết bị kể trên và có thể nâng cấp hệ điều hành, hãy làm ngay điều đó trong tuần này. Chẳng hạn, bất cứ PC nào chạy Window XP SP2 đều có thể nâng cấp lên XP SP3. Máy Mac cần nâng cấp lên phiên bản 10.13 High Sierra và bất cứ chiếc iPhone 5 hoặc mới hơn cần cài đặt iOS 10. PS4 hiện đã ở phiên bản firmware 9.00, vừa ra mắt cách đây ít ngày.
Máy chơi game PlayStation 3 có thể được nâng cấp hoặc không. Sony đã phát hành bản firmware PS3 4.88 vào tháng 6/2021 - gần 15 năm sau khi bản firmware đầu tiên được phát hành. Hiện chưa rõ bản cập nhật đó có gì. Sony chỉ nói rằng họ đã mang đến các "tính năng bổ sung, cải thiện khả năng sử dụng và bảo mật nâng capo", nhưng có thể nó sẽ khắc phục sự cố này.
Nếu không thể nâng cấp máy Mac, PC hoặc iPhone, bạn có thể cài đặt trình duyệt Firefox để duy trì truy cập Internet trong khi một số ứng dụng độc lập khác có thể không hoạt động. Firefox không phụ thuộc vào hệ điều hành của thiết bị để có các chứng chỉ bảo mật – nó sử dụng chứng chỉ bảo mật riêng.
Đối với TV thông minh, tủ lạnh thông minh, bộ định tuyến Wi-Fi gia đình… thật khó để nói. Khả năng cao là nhiều thiết bị phát hành trước năm 2017 có thể bị ảnh hưởng, đặc biệt là những thiết bị chưa từng nhận bất cứ bản cập nhật nào. Vì vậy nếu có thể, bạn hãy mở hoặc tải xuống hướng dẫn sử dụng của thiết bị và cố gắng nâng cấp firmware hoặc hệ điều hành.
Chuyện gì sẽ xảy ra?
Vẫn chưa hoàn toàn hết cơ hội đối với các thiết bị không thể nâng cấp. Hầu hết trong số chúng sẽ hỗ trợ ít nhất vài chục chứng chỉ gốc khác. Vì vậy, nhiều thiết bị cũ vẫn có thể kết nối với ít nhất một số trang web.
Do đó, sẽ rất khó để nói chính xác thiết bị nào sẽ bị ảnh hưởng ra sao vào ngày 30/9.
Từ thông báo DST Root CA X3 Hết hạn (tháng 9 năm 2021) , tôi đã theo liên kết của nó và đọc qua một số chủ đề, được liệt kê trong phần Tham khảo ở cuối. Tôi sẽ không lặp lại chúng nhưng cố gắng tóm tắt một chút.
- Let'sEncrypt có một CA cũ hơn hết hạn và chúng đã cung cấp một đường dẫn với tác động tối thiểu, như được mô tả trong Khả năng tương thích với chứng chỉ .
- Đối với các chứng chỉ mới được cấp sau ngày 4 tháng 5 năm 2021, một phương pháp mới được sử dụng để tạo các chứng chỉ, được mô tả trong Thay đổi chuỗi sản xuất .
- Phương pháp mới đã được quyết định cẩn thận để tối đa hóa khả năng tương thích của dịch vụ nhưng cũng có một số yêu cầu đối với máy khách, được mô tả trong Thay đổi về khả năng tương thích với máy khách OpenSSL cho Chứng chỉ Let's Encrypt .
- Sau ngày 30/9/2021, giao tiếp máy khách / máy chủ sẽ bị hỏng nếu chúng không đáp ứng yêu cầu.
- Kinh nghiệm từ việc hết hạn chứng chỉ gốc Sectigo năm ngoái có thể được sử dụng lại, từ Khắc phục sự cố do Hết hạn gốc CA bên ngoài AddTrust .
- Các câu hỏi / câu trả lời từ diễn đàn hỗ trợ Let'sEncrypt cung cấp ý tưởng có giá trị để hiểu trường hợp và giải pháp để thực hiện kiểm tra sớm. Chuỗi trợ giúp cho DST Root CA X3 hết hạn (tháng 9 năm 2021)
- Thử nghiệm bổ sung có thể được thực hiện vào tháng 7 năm 2021, vì vào thời điểm đó sẽ có một số chứng chỉ thực có ngày hết hạn sau 30/9/2021.
Ví dụ: sử dụng docker để khởi chạy ubuntu 14.04 / 16.04 / 18.04
$ docker run -it ubuntu:16.04 bash
root@797fc9ce1a95:/# apt update root@797fc9ce1a95:/# apt install openssl curl ca-certificates
DST Root CA X3 sắp hết hạn
root@797fc9ce1a95:/etc/ssl/certs# openssl x509 -in DST_Root_CA_X3.pem -noout -text Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3 Validity Not Before: Sep 30 21:12:19 2000 GMT Not After : Sep 30 14:01:15 2021 GMT
root@797fc9ce1a95:/etc/ssl/certs# openssl x509 -in ISRG_Root_X1.pem -noout -text Issuer: C=US, O=Internet Security Research Group, CN=ISRG Root X1 Validity Not Before: Jun 4 11:04:38 2015 GMT Not After : Jun 4 11:04:38 2035 GMT
# 14.04 $ openssl version OpenSSL 1.0.1f 6 Jan 2014 # 16.04 $ openssl version OpenSSL 1.0.2g 1 Mar 2016 # 18.04 $ openssl version OpenSSL 1.1.1 11 Sep 2018
Tôi sẽ gọi chúng là “chuỗi mặc định cũ”, “chuỗi thay thế cũ”, “chuỗi mặc định mới” và “chuỗi thay thế mới”. Xin lưu ý rằng “chuỗi thay thế cũ” giống với “chuỗi thay thế mới”.
Trích dẫn từ Thay đổi chuỗi sản xuất
Through May 3, 2021 Default chain: End-entity certificate ← R3 ← DST Root CA X3 Alternate chain: End-entity certificate ← R3 ← ISRG Root X1 Starting May 4, 2021 Default chain: End-entity certificate ← R3 ← ISRG Root X1 ← DST Root CA X3 Alternate chain: End-entity certificate ← R3 ← ISRG Root X1 This is a shorter chain, available to people through the API who do not need the Android compatibility of the longer chain. You can choose this chain with many ACME clients, please see your chosen ACME client documentation for more information.
Ví dụ: để hiểu cách dịch vụ này được khách hàng tin cậy,
https://helloworld.letsencrypt.org/# give the site name twice openssl s_client -servername helloworld.letsencrypt.org -showcerts -connect helloworld.letsencrypt.org:443
Certificate chain 0 s:/CN=helloworld.letsencrypt.org i:/C=US/O=Let's Encrypt/CN=R3 1 s:/C=US/O=Let's Encrypt/CN=R3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3
Một số dịch vụ khác nhau
https://helloworld.letsencrypt.org/ <-- as of 5/17/2021, this certificate is of the old default chain. https://acme-v02.api.letsencrypt.org/directory <-- this is load balanced by the new default chain and old default chain. https://valid-isrgrootx1.letsencrypt.org/ <-- this is the new alt chain
Mục đích là để tìm hiểu xem liệu giao tiếp máy khách / máy chủ có bị hỏng do chứng chỉ DST X3 hết hạn sau ngày 30/9/2021 hay không.
Chúng ta có thể du hành thời gian (bằng cách điều chỉnh thời gian hệ thống) để thực hiện bài kiểm tra ngay bây giờ không? Hóa ra chúng tôi vẫn không thể vì chứng chỉ Let'sEncrypt có giá trị trong 90 ngày. Hôm nay là 17/5/2021 (tính đến thời điểm viết bài) nên chứng chỉ mới nhất của họ chỉ có giá trị đến tháng 8. Vào tháng 7 năm 2021, chúng tôi sẽ có chứng chỉ có giá trị đến tháng 10, khi chúng tôi có thể du hành thời gian để kiểm tra.
Điều này chỉ áp dụng nếu phía dịch vụ web quyết định không thực hiện hành động nào, ví dụ: sử dụng “chuỗi mặc định mới”, là “Chứng chỉ thực thể cuối ← R3 ← ISRG Root X1 ← DST Root CA X3”, vì DST Root CA X3 là CA hết hạn có thể gây ra sự cố cho một số máy khách.
Nếu dịch vụ web đã sử dụng “chuỗi thay thế cũ”, ví dụ: “Chứng chỉ tổ chức cuối ← R3 ← ISRG Root X1” hoặc quyết định chuyển sang “chuỗi thay thế mới” (điều tương tự), thì có thể thực hiện kiểm tra NGAY BÂY GIỜ với chứng chỉ Let'sEncrypt được yêu cầu thông qua “chuỗi thay thế”, như được mô tả sau.
Giả vờ kiểm tra "chuỗi mặc định mới"
Hiện tại, chúng tôi không thể kiểm tra “chuỗi mặc định mới” bằng chứng chỉ thực. Nhưng chúng tôi có thể mô phỏng tình huống bằng cách sử dụng “chứng chỉ dàn dựng Let'sEncrypt”, chứng chỉ này sẽ quen thuộc với tất cả những ai đã sử dụng Let'sEncrypt.
Trong chủ đề diễn đàn, chuỗi trợ giúp cho DST Root CA X3 hết hạn (tháng 9 năm 2021) , bài đăng # 28, người dùng Nummer378 đã chia sẻ một liên kết có mô phỏng “chuỗi mặc định mới” với chứng chỉ dàn.
https://expired-root-ca-test.germancoding.com/
Liên kết này có "chứng chỉ dàn" nên trình duyệt hoặc trình duyệt thông thường sẽ hiển thị lỗi chứng chỉ.
Sử dụng lệnh này để tìm ra chuỗi tin cậy của nó.
openssl s_client -servername expired-root-ca-test.germancoding.com -showcerts -connect expired-root-ca-test.germancoding.com:443
Certificate chain 0 s:/CN=expired-root-ca-test.germancoding.com i:/C=US/O=(STAGING) Let's Encrypt/CN=(STAGING) Artificial Apricot R3 1 s:/C=US/O=(STAGING) Let's Encrypt/CN=(STAGING) Artificial Apricot R3 i:/C=US/O=(STAGING) Internet Security Research Group/CN=(STAGING) Pretend Pear X1 2 s:/C=US/O=(STAGING) Internet Security Research Group/CN=(STAGING) Pretend Pear X1 i:/C=US/O=(STAGING) Internet Security Research Group/CN=(STAGING) Doctored Durian Root CA X3
Thông tin CA giả mạo có thể được truy xuất từ 2 chứng chỉ gốc giả:
https://letsencrypt.org/certs/staging/letsencrypt-stg-root-x1.pem (Đây là chứng chỉ “ISRG Root X1” được mô phỏng)
https://letsencrypt.org/certs/staging/letsencrypt-stg-root-dst.pem (Đây là "DST Root CA X3" mô phỏng đã hết hạn)
#fake ISRG X1 Issuer: C=US, O=(STAGING) Internet Security Research Group, CN=(STAGING) Pretend Pear X1 Validity Not Before: Jun 4 11:04:38 2015 GMT Not After : Jun 4 11:04:38 2035 GMT # fake DST X3 Issuer: C=US, O=(STAGING) Internet Security Research Group, CN=(STAGING) Doctored Durian Root CA X3 Validity Not Before: Sep 30 21:12:19 2000 GMT Not After : Jan 30 14:01:15 2021 GMT
Để thực hiện thử nghiệm, CHỈ sử dụng môi trường thử nghiệm.
Thêm 2 "chứng chỉ gốc giả" này vào cửa hàng tin cậy. Tôi đã làm điều này trong Ubuntu và đối với các môi trường khác, nó có thể khác. Các bước ví dụ như sau:
$ cd /usr/local/share/ca-certificates/ $ sudo mkdir letsencrypt $ cd letsencrypt/ $ sudo wget --no-check-certificate https://letsencrypt.org/certs/staging/letsencrypt-stg-root-x1.pem $ sudo wget --no-check-certificate https://letsencrypt.org/certs/staging/letsencrypt-stg-root-dst.pem $ sudo mv letsencrypt-stg-root-x1.pem letsencrypt-stg-root-x1.crt $ sudo mv letsencrypt-stg-root-dst.pem letsencrypt-stg-root-dst.crt $ sudo update-ca-certificates
$ sudo update-ca-certificates Updating certificates in /etc/ssl/certs... 2 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done.
curl -v https://expired-root-ca-test.germancoding.com/
Kết quả đúng như mong đợi, như các Thay đổi về Khả năng Tương thích Máy khách OpenSSL cho Chứng chỉ Let's Encrypt đã cho chúng tôi biết.
Ubuntu 14.04 Không thành công OpenSSL 1.0.1f
Ubuntu 16.04 Không thành công Openssl 1.0.2g
Ubuntu 18.04 Pass Openssl 1.1.1kết quả kiểm tra chuỗi mặc định mới Vì vậy, chúng tôi có thể mong đợi sau ngày 30/9/2021, một ứng dụng khách từ Ubuntu 14.04 / 16.04 sử dụng lib OpenSSL gốc của nó không thể kết nối với dịch vụ có chứng chỉ "chuỗi mặc định" của Let'sEncrypt.
Tôi đọc rằng có thể biên dịch / cài đặt OpenSSL 1.1.x cho Ubuntu 16.04, nhưng không chắc cho 14.04. Tôi đã không kiểm tra để tìm ra khả năng tương thích đầy đủ của hệ thống với bản nâng cấp thủ công này. Tôi cũng đọc rằng có thể xây dựng cho phép cờ tính năng cho openssl 1.0.2 để có cùng hành vi của 1.1.x.
Kiểm tra với chứng chỉ "chuỗi thay thế mới"
"Chuỗi thay thế mới" đã có sẵn, giống như "chuỗi thay thế cũ". Ví dụ, liên kết này:
https://valid-isrgrootx1.letsencrypt.org/
Nếu bạn cần hỗ trợ các phiên bản OpenSSL bị ảnh hưởng và không cần khả năng tương thích với các thiết bị chạy phiên bản Android cũ hơn 7.1.1, bạn sẽ có thể định cấu hình ứng dụng khách ACME của mình để sử dụng chuỗi ngắn hoạt động cho OpenSSL.
từ Các thay đổi về khả năng tương thích với ứng dụng khách OpenSSL đối với chứng chỉ Let's EncryptVà, như mong đợi, không thể truy cập trang web sử dụng chứng chỉ “chuỗi thay thế mới” từ thiết bị Android <7.1.1, như tôi đã kiểm tra theo liên kết ở trên.
Để bổ sung bảng tương thích, tôi đã thêm thông tin về “chuỗi thay thế mới”.
Nó có thể tốt hơn không?
Kinh nghiệm từ việc hết hạn chứng chỉ gốc Sectigo năm ngoái, như được mô tả trong bài viết này - https://www.agwa.name/blog/post/fixing_the_addtrust_root_expiration, cho thấy có 2 phương pháp để khắc phục sự cố chứng chỉ gốc hết hạn: từ phía máy chủ và phía máy khách. Từ phía máy chủ, nó phải xóa chứng chỉ đã hết hạn khỏi chuỗi của nó, ví dụ như trong trường hợp Let'sEncrypt này, để sử dụng "chuỗi thay thế mới". Phương pháp khác là từ phía máy khách để xóa chứng chỉ gốc đã hết hạn khỏi kho lưu trữ tin cậy của nó.
Điều này chỉ có thể thực hiện được khi có thể điều chỉnh phía máy khách. Nếu không thể sửa đổi phần mềm máy khách thì đây không phải là tùy chọn.
Việc xóa chứng chỉ đã hết hạn từ phía máy khách hoạt động vì bản chất của lỗi OpenSSL 1.0.x chỉ xảy ra khi chứng chỉ đã hết hạn tồn tại. Đối với “chuỗi mặc định mới”, ví dụ: “Chứng chỉ thực thể cuối ← R3 ← ISRG Root X1 ← DST Root CA X3 (khi hết hạn)”, OpenSSL 1.0.x sẽ không kết nối được khi phát hiện chứng chỉ hết hạn, trong khi 1.1. x dừng phát hiện khi nó đã tìm thấy CA “ISRG Root X1” hợp lệ. Tuy nhiên, nếu chứng chỉ X3 hết hạn bị xóa khỏi cửa hàng tin cậy, kết nối sẽ hoạt động.
Để xác minh, hãy thực hiện một thử nghiệm khác tương tự như trên, ví dụ: sử dụng trang web thử nghiệm:
curl -v https://expired-root-ca-test.germancoding.com/
$ cd /usr/local/share/ca-certificates/ $ sudo mkdir letsencrypt $ cd letsencrypt/ $ sudo wget --no-check-certificate https://letsencrypt.org/certs/staging/letsencrypt-stg-root-x1.pem $ sudo mv letsencrypt-stg-root-x1.pem letsencrypt-stg-root-x1.crt $ sudo update-ca-certificates
Ubuntu 14.04 Pass Openssl 1.0.1f
Ubuntu 16.04 Pass Openssl 1.0.2g
Ubuntu 18.04 Pass Openssl 1.1.1Điều này chứng tỏ rằng khi chúng tôi xóa chứng chỉ gốc đã hết hạn, cả 3 phiên bản Ubuntu sẽ hoạt động với “chuỗi mặc định mới giả vờ”.
Một thử nghiệm khác có thể được thực hiện đối với "chuỗi mặc định mới" thực tế. "Chuỗi mặc định mới" đã có hiệu lực sau ngày 4/5/2021. Một trang web có chứng chỉ như vậy có thể được tạo hoặc sử dụng liên kết chính thức này:
https://acme-v02.api.letsencrypt.org/directory <-- this is load balanced by the new default chain and old default chain.
Đặt lại bộ chứa docker cho Ubuntu một lần nữa và bắt đầu những cái mới, sau đó xóa chứng chỉ “DST Root CA X3” hết hạn khỏi cửa hàng tin cậy.
# comment out the DST X3 cert $ sudo sed -i 's/mozilla\/DST_Root_CA_X3.crt/!mozilla\/DST_Root_CA_X3.crt/g' /etc/ca-certificates.conf $ sudo update-ca-certificates
# Hit the "old default chain" $ curl https://acme-v02.api.letsencrypt.org/directory curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above. # Hit the "new default chain" $ curl https://acme-v02.api.letsencrypt.org/directory { "HPMQaoDeou0": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417", "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change", "meta": { "caaIdentities": [ "letsencrypt.org" ], "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf", "website": "https://letsencrypt.org" }, "newAccount": "https://acme-v02.api.letsencrypt.org/acme/new-acct", "newNonce": "https://acme-v02.api.letsencrypt.org/acme/new-nonce", "newOrder": "https://acme-v02.api.letsencrypt.org/acme/new-order", "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert"
Yêu cầu thành công xác nhận rằng “chuỗi mặc định mới”, ví dụ: “Chứng chỉ thực thể cuối ← R3 ← ISRG Root X1 ← DST Root CA X3” hoạt động tốt ngay cả sau khi xóa chứng chỉ “DST X3” từ phía máy khách.
Kiểm tra xác nhận nếu phía máy khách có thể được điều chỉnh để xóa chứng chỉ gốc DST X3 đã hết hạn, nó sẽ hoạt động với chứng chỉ "chuỗi mặc định mới", như được hiển thị trong bảng bên dưới.
Phương pháp này hơi phức tạp về “thời điểm” xóa chứng chỉ DST X3, vì thông thường quá trình lan truyền phần mềm phía máy khách mất khá nhiều thời gian.
Phương pháp yêu cầu chứng chỉ "chuỗi thay thế mới"
Tôi vẫn đang tìm một phương pháp phù hợp để yêu cầu chứng chỉ "chuỗi thay thế mới". Một số gợi ý được cung cấp ở đây mà các ứng dụng khách acme uacme , Caddy và Certbot đã hỗ trợ. Tôi cũng thấy rằng lego có sự hỗ trợ. Từ cấp độ cao hơn, Traefik 2.x có hỗ trợ, nhưng tôi chưa thử. cert-manager hỗ trợ " chuỗi thay thế " và tôi đã thử nghiệm nó OK.
Cảm ơn vì đã đọc.
Không có nhận xét nào: