How to Fix Let Encrypt Certificate Error
Vấn đề
- Có rất nhiều website/app sử dụng free SSL certificate của Let’s Encrypt, mà SSL này là con của CA root
DST Root CA X3
- Ngày 30/10/2021 thì
DST Root CA X3
hết hạn nên các website sử dụng SSL certificate của Let’s Encrypt sẽ bị báo lỗi - Let’s Encrypt đã xử lý vấn đề này từ lâu bằng cách thay
DST Root CA X3
bằng CA root mới làISRG Root X1
. Nếu các máy tính / client có càiISRG Root X1
này rồi thì sẽ không bị vấn đề gì với việcDST Root CA X3
bị hết hạn - Tuy nhiên, vấn đề ở đây là có nhiều máy tính không được cập nhật
ISRG Root X1
, ví dụ, do họ tắt chức năng Windows Update đi chẳng hạn. Khi đó các máy này sẽ bị báo lỗi invalid SSL certificate (vì các máy này không chấp nhậnISRG Root X1
)
Giải pháp
- Hoặc: các website này phải thay SSL certificate bằng một cái mới, thuộc một CA root nào đó mà các máy tính đang hỗ trợ
- Ví dụ như thay bằng free SSL certificate cung cấp bởi ZeroSSL.com
- Hoặc: cập nhật lại hệ điều hành / hoặc chạy Windows Update để hệ điều hành cập nhật thêm
ISRG Root X1
vào hệ thống - Hoặc: tải
ISRG Root X1
về và cập nhật bằng tayISRG Root X1
vào hệ thống - Hoặc: sử dụng trình duyệt Firefox. Trình duyệt này đã tự động hỗ trợ
ISRG Root X1
nên không bị lỗi invalid SSL certificate như trên
Hướng dẫn
Tạo SSL certificate với ZeroSSL.com
- Bước 1: đăng ký 1 tài khoản trên ZeroSSL.com (với 1 địa chỉ email nào đó)
- Bước 2: cài
acme.sh
trên Linux terminal (ref: https://github.com/acmesh-official/acme.sh)
cd ~
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m myemail@example.com
(restart terminal)
acme.sh -h
- Bước 3: tạo SSL certificate
(vào webroot của domain cần tạo SSL)
acme.sh --issue -d example.com -w .
hoặc:
acme.sh --issue --nginx -d example.com -d www.example.com
Nếu muốn debug thì thêm --debug 2
vào cuối các câu lệnh trên
- Bước 4: gắn SSL certificate vừa tạo vào cấu hình nginx của website tương ứng, như ví dụ sau:
server {
server_name example.com www.example.com;
server_tokens off;
index index.html;
location / {
root /space1/customers/example.com/www/hugo/public/;
}
listen 443;
ssl on;
ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com/example.com.key;
error_page 404 /404.html;
}
- Bước 5:
service nginx reload
và kiểm tra trên browser xem certificate đã được cập nhật mới chưa
Cập nhật bằng tay ISRG Root X1
- Bước 1: Trên Windows, chạy chương trình
certmgr.msc
, rồi vào phầnTrusted Root Certificates
và xóa mụcDST Root CA X3
- Bước 2: vào https://letsencrypt.org/certificates/ và download tập tin
isrgrootx1.der
ở mục
Active
ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1)
Self-signed: der, pem, txt
- Bước 3: install certificate này bằng cách nhấp đúp lên tập tin
isrgrootx1.der
. Sau đó chọn để install vào phầnTrusted Root Certificates
- Bước 4: Kiểm tra lại bằng
certmgr.msc
xem certificateISRG Root X1
đã vào trong hệ thống chưa - Bước 5: Kiểm tra lại trên browser xem website còn bị lỗi certificate hay không