Thứ năm, 06/08/2020 | 00:00 GMT+7

Lỗi cấu hình Apache AH02572: Không thể cấu hình ít nhất một chứng chỉ và khóa

Loạt bài hướng dẫn này giải thích cách khắc phục sự cố và sửa chữa một số lỗi phổ biến nhất mà bạn có thể gặp phải khi sử dụng web server Apache .

Một phần của Loạt bài: Các lỗi Apache thường gặp

Mỗi hướng dẫn trong loạt bài này bao gồm mô tả về các lỗi cấu hình Apache, mạng, hệ thống file hoặc quyền phổ biến. Loạt bài này bắt đầu với tổng quan về các lệnh và file log mà bạn có thể sử dụng để khắc phục sự cố Apache. Các hướng dẫn tiếp theo kiểm tra các lỗi cụ thể một cách chi tiết.

Apache tạo AH02572: Failed to configure at least one certificate and key thông báo lỗi AH02572: Failed to configure at least one certificate and key khi nó được cấu hình để sử dụng module ssl , nhưng thiếu public certificate TLS / SSL và private key tương ứng. Lỗi sẽ ngăn Apache khởi động và bản thân thông báo lỗi sẽ được tìm thấy trong log của Apache.

Trong hướng dẫn này, bạn sẽ học cách khắc phục lỗi AH02572 bằng cách sử dụng các phương pháp được mô tả trong hướng dẫnCách khắc phục sự cố Apache thường gặp ở đầu loạt bài này. Bạn cũng sẽ tìm hiểu làm thế nào để cài đặt các SSLCertificateFileSSLCertificateKeyFile chỉ thị để giải quyết thông báo.

Nếu bạn đã xác định rằng server Apache của bạn bị ảnh hưởng bởi lỗi AH02572 và bạn muốn bỏ qua các bước khắc phục sự cố, phần Thêm certificate SSL vào Apache ở cuối hướng dẫn này sẽ giải thích cách giải quyết lỗi.

Khắc phục sự cố bằng systemctl

Khi bạn đang khắc phục sự cố AH02572: Failed to configure at least one certificate and key thông báo lỗi AH02572: Failed to configure at least one certificate and key , Apache sẽ không chạy. Trạng thái systemctl của nó sẽ hiển thị một thông báo failed .

Để kiểm tra trạng thái của Apache với systemctl , hãy chạy lệnh sau trên các bản phân phối Linux dẫn xuất Ubuntu và Debian:

Hệ thống Ubuntu và Debian
  • sudo systemctl status apache2.service -l --no-pager

Trên hệ thống CentOS và Fedora, sử dụng lệnh này để kiểm tra trạng thái của Apache:

Hệ thống CentOS và Fedora
  • sudo systemctl status httpd.service -l --no-pager

Cờ -l sẽ đảm bảo systemctl xuất ra toàn bộ nội dung của một dòng, thay vì thay thế bằng systemctl ( ) cho các dòng dài. Cờ --no-pager sẽ xuất toàn bộ log ra màn hình của bạn mà không cần gọi một công cụ như less chỉ hiển thị màn hình nội dung tại một thời điểm.

Bạn sẽ nhận được kết quả tương tự như sau:

Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: failed (Result: exit-code) since Fri 2020-07-31 16:02:41 UTC; 20s ago Process: 36 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE) Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Starting The Apache HTTP Server... Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: Action 'start' failed. Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: The Apache error log may have more information. Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Control process exited, code=exited status=1 Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Failed with result 'exit-code'. Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Failed to start The Apache HTTP Server.

Những dòng quan trọng cần lưu ý là những dòng cho thấy Apache không khởi động được. Tuy nhiên, không có gì trong kết quả cho biết thông báo lỗi AH02572. Kiểm tra log systemd cho Apache bằng lệnh journalctl hoặc kiểm tra file cấu hình của Apache bằng apachectl configtest sẽ không giúp xác định vị trí thông tin mà bạn có thể sử dụng để khắc phục lỗi.

Để chẩn đoán và giải quyết lỗi AH02572, phần tiếp theo giải thích cách kiểm tra log của Apache trực tiếp.

Kiểm tra log của Apache

Apache ghi lại thông tin chẩn đoán về các hoạt động nội bộ của nó đến nhiều vị trí khác nhau, những thông tin này khác nhau tùy thuộc vào bản phân phối Linux của bạn. Thông thường, Apache được cấu hình để ghi thông báo lỗi vào một file log riêng biệt từ các yêu cầu truy cập để giúp gỡ lỗi, giám sát và cảnh báo.

Trên Ubuntu và các hệ thống bắt nguồn từ Debian, Apache mặc định sử dụng /var/log/apache2/error.log cho các thông báo lỗi.

Trên các hệ thống có nguồn root từ CentOS, Fedora và RedHat, Apache mặc định ghi lỗi ghi vào file /var/log/httpd/error_log .

Để kiểm tra log của Apache để tìm bằng chứng về thông báo lỗi AH02572, hãy sử dụng trình grep để tìm kiếm mã lỗi trong file log thích hợp cho bản phân phối của bạn. Mặc dù có những công cụ khác như less mà bạn có thể sử dụng để tìm bằng chứng về lỗi AH02572, nhưng grep sẽ chỉ hiển thị các dòng có mã lỗi để bạn có thể chắc chắn rằng mình có bị ảnh hưởng bởi sự cố hay không.

Gọi grep như thế này trên Ubuntu và các hệ thống có nguồn root từ Debian:

  • sudo grep AH02572 /var/log/apache2/error.log

Trên các hệ thống có nguồn root từ CentOS, Fedora và RedHat, hãy sử dụng lệnh sau:

  • sudo grep AH02572 /var/log/httpd/error_log

Nếu server Apache của bạn bị ảnh hưởng bởi lỗi AH02572, bạn sẽ có kết quả như sau:

Output
[Mon Aug 03 13:21:47.677235 2020] [ssl:emerg] [pid 26:tid 140355819735360] AH02572: Failed to configure at least one certificate and key for 203.0.113.0:443

Nếu server của bạn bị ảnh hưởng bởi lỗi AH02572, phần tiếp theo của hướng dẫn này sẽ giải thích cách giải quyết lỗi này, bằng cách tắt module ssl hoặc cấu hình Apache bằng private key và file public certificate .

Giải quyết lỗi AH02572

Có ba cách để giải quyết lỗi AH02572. Tùy chọn đầu tiên để giải quyết lỗi là cấu hình Apache bằng private key và public certificate được ký bởi Tổ chức phát hành certificate (CA) được công nhận. Let's Encrypt là một CA miễn phí và bạn có thể sử dụng nó để cấp certificate hợp lệ. Cách tiếp cận này sẽ đảm bảo lưu lượng truy cập đến và đi từ server của bạn được mã hóa đúng cách và trình duyệt web cũng như các ứng dụng client HTTP khác tin cậy server Apache của bạn.

Một cách tiếp cận khác là tạo certificate tự ký cho server Apache của bạn. Cách tiếp cận này hữu ích cho môi trường phát triển và thử nghiệm hoặc trong trường hợp server của bạn không được kết nối trực tiếp với Internet và bạn có thể cài đặt sự tin cậy giữa các hệ thống theo cách thủ công.

Cách cuối cùng để giải quyết lỗi AH02572 là tắt hoàn toàn module ssl của Apache. Tùy chọn này ít được ưu tiên nhất vì lưu lượng truy cập đến và đi từ server của bạn sẽ không được mã hóa. Tuy nhiên, nếu bạn chỉ đang sử dụng server Apache của bạn để phát triển local hoặc trong môi trường tin cậy , thì phương pháp này có thể hợp lệ.

Các phần sau giải thích cách giải quyết lỗi AH02572 bằng cách sử dụng từng tùy chọn trong ba tùy chọn.

Giải quyết lỗi AH02572 bằng certificate Let's Encrypt TLS

Để mã hóa lưu lượng truy cập vào server Apache của bạn bằng Chứng chỉ Let's Encrypt TLS miễn phí, hãy sử dụng một trong các hướng dẫn dành riêng cho bản phân phối Linux của bạn từ loạt bài hướng dẫn này: Cách bảo mật Apache bằng Let's Encrypt .

Quá trình Let's Encrypt chủ yếu là tự động và các tập lệnh sẽ cấu hình Apache cho bạn. Hơn nữa, certificate đã cấp cũng sẽ tự động được gia hạn nên bạn không phải lo lắng về việc certificate này sẽ hết hạn trong tương lai.

Nếu bạn đang sử dụng bản phân phối Linux không có trong loạt bài Cách bảo mật Apache với Let's Encrypt , tài liệu Let's Encrypt bao gồm các liên kết đến các hướng dẫn Certbot tương tác có thể giúp bạn cấu hình server Apache của bạn bằng certificate TLS hợp lệ.

Giải quyết lỗi AH02572 bằng certificate tự ký

Để mã hóa lưu lượng truy cập đến server Apache của bạn bằng certificate tự ký, hãy sử dụng một trong các hướng dẫn từ loạt bài này giải thích cách tạo Chứng chỉ SSL tự ký với Apache .

Các hướng dẫn này trình bày cách tạo private key và public certificate cho server Apache của bạn. Họ cũng trình bày cách sử dụng chỉ thị SSLCertificateFileSSLCertificateKeyFile Apache để cấu hình server của bạn với certificate mà bạn tạo.

Nếu bạn không sử dụng bản phân phối được liệt kê trong bộ hướng dẫn Chứng chỉ SSL tự ký với Apache , hướng dẫn Cơ bản về OpenSSL: Làm việc với Chứng chỉ SSL, Khóa riêng tư và CSR có thể giúp bạn tạo private key và public certificate tự ký mà bạn có thể sử dụng với Apache.

Lưu ý: Nếu có thể, tốt nhất là sử dụng certificate Let's Encrypt miễn phí hoặc certificate TLS được phát hành thương mại khác.Chứng chỉ TLS tự ký không được trình duyệt và các ứng dụng client HTTP khác tin cậy theo mặc định. Do đó, user của bạn sẽ thấy lỗi bảo mật khi truy cập trang web . Tuy nhiên, nếu bạn đang phát triển local hoặc trường hợp sử dụng của bạn không certificate request TLS hợp lệ, bạn có thể chọn phương pháp tự ký.

Tắt module ssl

Cách cuối cùng để giải quyết lỗi AH02572 là tắt hỗ trợ TLS / SSL của Apache bằng cách tắt module ssl . Cách tiếp cận này ít được mong muốn hơn so với mã hóa lưu lượng truy cập đến server của bạn bằng certificate TLS, vì vậy hãy chắc chắn rằng bạn không cần hỗ trợ TLS trước khi tắt module .

Để tắt module ssl của Apache trên Ubuntu và các hệ thống có nguồn root từ Debian, hãy chạy lệnh sau:

  • sudo a2dismod ssl

Trên các hệ thống có nguồn root từ CentOS, Fedora và RedHat, hãy tắt module bằng lệnh sau:

  • sudo rm /etc/httpd/conf.modules.d/00-ssl.conf

Khi bạn đã tắt module ssl , hãy chạy apachectl để kiểm tra xem cấu hình có hợp lệ không.

  • sudo apachectl configtest

Một lệnh gọi cấu hình apachectl configtest thành công sẽ dẫn đến kết quả như thế này:

Output
Syntax OK

Đến đây bạn có thể khởi động lại Apache bằng lệnh systemctl restart thích hợp cho bản phân phối Linux của bạn.

Trên Ubuntu và các hệ thống bắt nguồn từ Debian, hãy chạy như sau:

  • sudo systemctl restart apache2.service

Trên các hệ thống có nguồn root từ CentOS, Fedora và RedHat sử dụng lệnh này để khởi động lại Apache:

  • sudo systemctl restart httpd.service

Nếu không có lỗi nào từ lệnh systemctl thì bạn đã vô hiệu hóa module ssl thành công.

Kết luận

AH02572: Failed to configure at least one certificate and key lỗi AH02572: Failed to configure at least one certificate and key khó phát hiện và khắc phục sự cố. Chúng không thể được chẩn đoán bằng các systemctl , journalctlapachectl thông thường. Trong hướng dẫn này, bạn đã học cách sử dụng trình grep để kiểm tra log của Apache trực tiếp để tìm bằng chứng về lỗi AH02572.

Tiếp theo, bạn đã học cách sử dụng Let's Encrypt để cấu hình Apache với certificate TLS để bảo mật lưu lượng truy cập của bạn và giải quyết lỗi AH02572. Bạn cũng đã học về cách sử dụng certificate TLS tự ký cho môi trường phát triển và biệt lập. Cuối cùng, bạn đã học được cách tắt module ssl cho những trường hợp không cần thiết.


Tags:

Các tin trước

Lỗi cấu hình Apache AH00558: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của server 2020-08-06
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 18.04 2020-08-06
Lỗi mạng Apache AH00072: make_sock: không thể liên kết với địa chỉ 2020-07-30
Cách khắc phục các lỗi Apache thường gặp 2020-07-30
Lỗi cấu hình Apache AH00526: Lỗi cú pháp 2020-07-30
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 20.04 2020-07-06
Cách tạo chứng chỉ SSL tự ký cho Apache trên CentOS 8 2020-06-30
Cách bảo mật Apache bằng Let's Encrypt trên CentOS 8 2020-06-29
Cách cấu hình Apache HTTP với Sự kiện MPM và PHP-FPM trên Ubuntu 18.04 2020-05-13
Cách cài đặt web server Apache trên CentOS 8 [Quickstart] 2020-05-08