Khắc phục sự cố chứng chỉ SSL và ServBay CA
Tài liệu này cung cấp một số vấn đề thường gặp cũng như các phương pháp khắc phục liên quan đến chứng chỉ SSL và ServBay CA trong môi trường phát triển local sử dụng ServBay.
Tại sao khi mở trình duyệt, tôi nhận được cảnh báo “Chứng chỉ SSL không được tin cậy”?
Khi bạn truy cập website local được lưu trữ bởi ServBay trên trình duyệt mà xuất hiện những cảnh báo như sau, thường là do cấu hình chứng chỉ SSL đang gặp vấn đề:
- Chrome / Edge:
Your connection is not private
(Kết nối của bạn không an toàn)- Mã lỗi
NET::ERR_CERT_AUTHORITY_INVALID
- Mã lỗi
NET::ERR_CERT_COMMON_NAME_INVALID
(Có thể gặp nếu chứng chỉ không khớp với tên miền)
- Firefox:
Warning: Potential Security Risk Ahead
(Cảnh báo: Có nguy cơ bảo mật phía trước)- Khi nhấn "Nâng cao" có thể thấy mã lỗi
SEC_ERROR_UNKNOWN_ISSUER
- Mã lỗi
SSL_ERROR_BAD_CERT_DOMAIN
(Nếu chứng chỉ không khớp với tên miền)
- Safari:
This Connection Is Not Private
(Kết nối này không riêng tư)Safari can't verify the identity of the website "your-domain.test"
(Safari không thể xác minh danh tính của website “tên miền của bạn.test”)
Nguyên nhân chính của vấn đề này là do ServBay User CA
và ServBay Public CA
chưa được cài đặt và tin cậy đúng cách. Điều này có thể xuất phát từ một số lý do:
- Chứng chỉ gốc của ServBay chưa được thêm vào danh sách tin cậy của hệ thống.
- Bạn từng sử dụng cùng một tên miền (ví dụ
myapp.test
) trên các phần mềm phát triển local khác như MAMP / Laravel Herd. Trong trường hợp này, chứng chỉ của các công cụ đó có thể xung đột với chứng chỉ của ServBay hoặc bị trình duyệt lưu nhầm thông tin tin cậy hay chứng chỉ.
Cách khắc phục
Hãy làm theo các bước sau:
- Mở ServBay
- Truy cập Cài đặt (Settings), tìm đến mục ServBay Root CA.
- Nhấn Cài đặt lại ServBay Root CA (Reinstall ServBay Root CA). ServBay sẽ tự động sửa các vấn đề liên quan đến cài đặt và tin cậy chứng chỉ gốc.
- Đóng hoàn toàn và mở lại trình duyệt của bạn (hãy đảm bảo đóng tất cả cửa sổ và tiến trình để xóa trạng thái SSL đã cache).
- Truy cập lại trang web local. Lỗi tiếng SSL sẽ được khắc phục.
Nếu vấn đề vẫn còn:
Điều này thường do hệ thống vẫn còn những chứng chỉ cũ, bị xung đột hoặc không hợp lệ, đặc biệt nếu bạn đã từng sử dụng các công cụ như MAMP, Herd để phát hành chứng chỉ cho cùng một tên miền.
- Mở ứng dụng Truy cập Chuỗi Chìa khóa (Keychain Access) trên macOS (trong “Ứng dụng” > “Tiện ích”).
- Ở ô tìm kiếm góc phải, nhập tên miền gặp sự cố (vd.
myapp.test
, hoặc nếu không chắc cứ tìmmamp
,herd
... để kiểm tra các tổ chức phát hành liên quan). - Lọc mục loại ở trên đầu sang Chứng chỉ (Certificates).
- Trong kết quả, tìm tất cả chứng chỉ SSL liên quan đến tên miền bạn nhập. Đặc biệt xem phần Nhà phát hành (Issuer) có phải là
ServBay User CA
,MAMP Development CA
,Laravel Herd CA
hay tên tương tự hay không. - Chọn các chứng chỉ liên quan đến tên miền gặp sự cố (ưu tiên xóa các chứng chỉ không do
ServBay User CA
phát hành, hoặc nhìn đáng ngờ), rồi nhấn phímDelete
để xóa. Có thể cần nhập mật khẩu hệ thống. Hãy cẩn trọng – chỉ xóa chứng chỉ liên quan đến tên miền local phát triển của bạn! - (Tùy chọn, nên thực hiện) * Tiếp tục tìm kiếm
ServBay User CA
vàServBay Public CA
trong Keychain để xác nhận chứng chỉ tồn tại, không có dấu “x” đỏ (dấu hiệu không tin cậy). Nếu bị không tin cậy, hãy nhấp đúp vào chứng chỉ, mở phần “Tin cậy (Trust)” rồi chọn “Luôn tin cậy (Always Trust)” ở mục “Khi sử dụng chứng chỉ này (When using this certificate)”.
- (Tùy chọn, nên thực hiện) * Tiếp tục tìm kiếm
- Quay lại ứng dụng ServBay.
- Truy cập Cài đặt (Settings) -> ServBay Root CA.
- Nhấn Tạo lại tất cả chứng chỉ người dùng ServBay (Recreate All ServBay User Certificates). Thao tác này sẽ tạo mới chứng chỉ SSL cho tất cả các site quản lý bởi ServBay.
- Khởi động lại máy Mac. Việc này đảm bảo mọi dịch vụ và thành phần hệ thống sử dụng bộ chứng chỉ/tin cậy mới nhất.
- Mở lại trình duyệt, truy cập website của bạn và kiểm tra.
Với việc liệt kê các thông báo lỗi phổ biến trên, người dùng có thể nhanh chóng nhận biết vấn đề liên quan đến tin cậy chứng chỉ SSL và tìm được cách giải quyết phù hợp.
Làm thế nào nếu chứng chỉ SSL bị mất?
Trong quá trình phát triển website local bằng ServBay, đôi khi bạn có thể đối mặt với tình huống file chứng chỉ SSL bị xóa nhầm hoặc thất lạc. Lúc này, máy chủ Web (Nginx, Caddy hoặc Apache) sẽ không thể khởi động hoặc hoạt động bình thường, và log sẽ xuất hiện các thông báo lỗi liên quan đến file chứng chỉ.
Mô tả lỗi
Khi file chứng chỉ SSL (.crt
và .key
) tự động phát hành bởi ServBay cho website local bị mất, bạn sẽ thấy những thông báo lỗi tương tự trong log của Web server. Các thông báo này báo hiệu server không tìm thấy hoặc không đọc được đường dẫn chứng chỉ được chỉ định.
Một số ví dụ điển hình:
Lỗi Nginx:
nginx: [emerg] cannot load certificate "/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/Applications/ServBay/ssl/private/tls-certs/servb3ay.host/servbay.host.crt, r) error:10000080:BIO routines::no such file)
nginx: configuration file /Applications/ServBay/package/etc/nginx/nginx.conf test failed
2
Lỗi Caddy:
Error: loading http app module: provision http: getting tls app: loading tls app module: provision tls: loading certificates: open /Applications/ServBay/ssl/private/tls-certs/servbay.host/ser3vbay.host.crt: no such file or directory
Lỗi Apache:
AH00526: Syntax error on line 15 of /Applications/ServBay/package/etc/apache/vhosts/servbay.host.conf:
SSLCertificateFile: file '/Applications/ServBay/ssl/pri3vate/tls-certs/servbay.host/servbay.host.crt' does not exist or is empty
2
Dù câu chữ khác nhau, cốt lõi đều là: đường dẫn file chứng chỉ SSL được cấu hình cho Web server không hợp lệ hoặc file không tồn tại.
Giải pháp
Đối với các chứng chỉ SSL được ServBay tự động phát hành cho site local, ServBay đã có cơ chế tự động phát hiện và cấp phát lại nhanh chóng nhằm giải quyết vấn đề mất chứng chỉ.
Hãy thực hiện như sau:
- Khởi động ứng dụng ServBay: Đảm bảo ServBay đang chạy.
- Chuyển đến danh sách website: Trên thanh bên trái của ServBay, chọn Website.
- Chọn site bị ảnh hưởng: Tìm và chọn tên website local bị lỗi mất chứng chỉ SSL.
- Tự động phát hiện & cấp phát: Khi bạn mở cấu hình của site, ServBay sẽ tự động kiểm tra việc thiếu file chứng chỉ SSL cần thiết. Nếu phát hiện thiếu (
.crt
hoặc.key
), ServBay sẽ tự động tạo mới và cài đặt chứng chỉ đúng vị trí (/Applications/ServBay/ssl/private/tls-certs/tên-miền-của-bạn/
). - Khởi động lại Web server: Khi chứng chỉ đã được tạo lại, bạn cần khởi động lại gói phần mềm Web server (Nginx, Caddy hoặc Apache) đang phục vụ website đó để nạp chứng chỉ mới. Hãy vào mục Gói phần mềm (Package) từ thanh bên, tìm server bạn đang dùng và nhấn nút khởi động lại (biểu tượng mũi tên vòng tròn).
- Kiểm tra khắc phục: Khi Web server khởi động lại thành công, thử truy cập website local của bạn qua HTTPS (ví dụ
https://tên-miền-của-bạn
). Nếu mọi thứ đúng, website sẽ tải bình thường qua kết nối HTTPS.
Lưu ý
- Giải pháp này chỉ áp dụng cho các chứng chỉ SSL tự động phát hành bởi ServBay. Nếu bạn sử dụng chứng chỉ tùy chỉnh tự nhập, khi mất file bạn cần tự xử lý (khôi phục hoặc xin cấp lại và nhập lại vào ServBay).
- ServBay dùng ServBay User CA tích hợp để cấp chứng chỉ SSL cho môi trường local. Nếu khi truy cập local HTTPS vẫn xuất hiện cảnh báo không đáng tin, có thể do CA của ServBay chưa được hệ điều hành hoặc trình duyệt tin tưởng. Tham khảo thêm tài liệu về tin cậy ServBay CA của ServBay.
- ServBay hỗ trợ backup dữ liệu, bao gồm backup cấu hình website và cả chứng chỉ SSL. Bạn nên thường xuyên backup để dễ dàng khôi phục khi có sự cố.
Câu hỏi thường gặp (FAQ)
Q: Vì sao ServBay tự động cấp phát chứng chỉ SSL cho website local?
A: ServBay hướng tới việc cung cấp môi trường phát triển local hoàn thiện. Để mô phỏng giống môi trường production và cho phép dev kiểm thử HTTPS thuận tiện, ServBay sẽ tự động phát hành chứng chỉ SSL cho các website local dựa trên ServBay User CA tích hợp, giúp bạn truy cập HTTPS local dễ dàng.
Q: Tôi có thể sử dụng chứng chỉ SSL của riêng mình không?
A: Có, ServBay hỗ trợ nhập và sử dụng chứng chỉ SSL tùy chỉnh (bao gồm cả chứng chỉ xin bằng ACME / Let's Encrypt). Hướng dẫn khắc phục sự cố này tập trung vào loại chứng chỉ tự sinh của ServBay.
Q: Việc cấp lại chứng chỉ có an toàn không?
A: Có. Trong môi trường local, việc ServBay cấp lại chứng chỉ là cấp mới dưới CA nội bộ của ServBay, chỉ dùng cho phát triển local và kiểm thử. Điều này không ảnh hưởng gì tới bảo mật trên Internet công cộng của website bạn.
Tổng kết
ServBay cung cấp các cơ chế thuận tiện để quản lý chứng chỉ SSL cho môi trường phát triển local. Khi chứng chỉ SSL tự động phát hành cho website local bị mất, chỉ với một vài thao tác đơn giản, ServBay sẽ tự động phát hiện, tạo lại chứng chỉ mới, giúp bạn nhanh chóng phục hồi website local và tiếp tục sử dụng HTTPS.