Lỗi SSL Apache: Không tìm thấy khóa riêng


8

Tôi đang chạy apache trên Ubuntu 14.04 và đang cố gắng triển khai SSL. Mọi sự trợ giúp sẽ rất được trân trọng.

default-ssl.conf có:

SSLCertificateFile      /etc/apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Khi tôi khởi động lại apache, thông báo Lỗi trong /var/log/apache2/error.log là:

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$

Làm thế nào bạn giải quyết vấn đề này?
Srinivas

Câu trả lời:


6

CẢNH BÁO: Đừng bao giờ đăng khóa riêng của bạn trên internet. Thậm chí không sao chép nó sang máy tính khác, máy trạm, vv Nó phải được giữ kín nhất có thể.

SSLCertertKeyFile yêu cầu Khóa riêng. Khóa này thường được tạo trước CSR hoặc cùng một lúc. Tìm kiếm tệp bắt đầu bằng một dòng chứa:BEGIN PRIVATE KEY

CSR (yêu cầu ký chứng chỉ) chỉ được yêu cầu khi bạn yêu cầu ký chứng chỉ. Sau đó bạn có thể loại bỏ nó.

Nếu bạn mất Khóa riêng, bạn sẽ cần tạo Khóa riêng mới, sau đó tạo CSR mới và yêu cầu CA (cơ quan cấp chứng chỉ) ký lại CSR.


1

Đây là vấn đề:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Bạn đặt tệp yêu cầu ký chứng chỉ (CSR) tại đây do nhầm lẫn. Bạn nên đặt ở đó tệp khóa riêng mà bạn đã sử dụng để tạo CSR thay thế. Tệp khóa riêng đó không được bảo vệ bằng mật khẩu, nếu không, bạn sẽ cần nhập mật khẩu mỗi khi bạn khởi động lại Apache.

Vì lợi ích của các thế hệ sắp tới, đây là một bản tóm tắt ngắn về cách tạo CSR với OpenSSL (một hướng dẫn tốt có sẵn từ tài liệu Ubuntu ):

1) Tạo khóa máy chủ:

openssl genrsa -des3 -out server.key 2048

Điều này đòi hỏi bạn phải chỉ định một mật khẩu.

2) Tạo khóa riêng không có mật khẩu, nhập mật khẩu bạn đã sử dụng ở trên khi được nhắc:

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3) Tạo CSR bằng khóa riêng không có mật khẩu của bạn:

openssl req -new -key server.key -out mydomain.org.csr

trong đó "mydomain.org" có thể là miền của bạn. Bạn phải trả lời một vài câu hỏi tương tác. Khi bạn đã hoàn tất, bạn gửi mydomain.org.csrtệp cho cơ quan chứng nhận của bạn. Bạn sẽ lấy lại một *.crttập tin hoặc một *.pemtập tin. Giả sử họ đã cho bạn mydomain.org.crt. Cài đặt nó làm chứng chỉ của bạn và tệp khóa không mật khẩu làm khóa của bạn (các vị trí hợp lệ cho Ubuntu 14.04, chúng có thể ở một nơi khác trên các hệ thống khác, kiểm tra tài liệu Apache2):

sudo cp mydomain.org.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private/mydomain.org.key

Và cuối cùng chỉnh sửa cấu hình Apache2 (có thể default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

Hi vọng điêu nay co ich.


1

Tôi biết ai đó đã trả lời câu hỏi này, nhưng tôi muốn cho người khác biết chuyện gì đã xảy ra với tôi khi tôi gặp lỗi này.

Trong lý do của tôi, tôi đã nhầm lẫn SSLCertertFile thay vì SSLCertertChainFile cho gói chứng chỉ của mình. Lỗi này liên tục xuất hiện và ném cho tôi một vòng lặp. Tôi cứ nghĩ khóa riêng của mình là sai.


0

Tôi biết bài đăng này đã cũ, nhưng tôi đoán rằng tôi nên thêm nhiều hơn vào nó vì đây là liên kết đầu tiên trên một tìm kiếm google về lỗi - "Ban đầu: Không tìm thấy khóa riêng tư"

Tôi đã thấy điều này xảy ra trước đây và hóa ra đó là một khóa riêng xấu. Tôi đã sử dụng strace để theo dõi apache khóa riêng cuối cùng đã cố gắng tải. Khi tôi xóa nó khỏi thư mục ssl và httpd.conf, Apache đã khởi động lại mà không gặp vấn đề gì.

Khóa SSL xấu: -rw-r ----- 1 root 754974732 1.7K ngày 31 tháng 5 năm 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Lệnh được sử dụng để theo dõi khóa xấu: strace -f -v -s 1024 -o strace.log dịch vụ httpd start

Môi trường: HĐH: CentSO 6.9 Bảng điều khiển: cPanel 11.64 Apache Phiên bản 2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

Tôi hi vọng cái này giúp được!


Chào mừng bạn đến với Lỗi Máy chủ. Bài viết của bạn có thể sử dụng định dạng được cải thiện. Là khóa SSL xấu: ... đoạn có lẽ là một trích dẫn? Ngoài ra, TL; DR của bạn không cần phải được định dạng là code. Cảm ơn đã đóng góp.
Tôi nói Phục hồi Monica

0

Tôi đã quay bánh xe của mình trên cái này một chút nhưng đảm bảo rằng bạn có một tệp khóa riêng hoàn chỉnh. Hóa ra tôi có một vài dòng bị thiếu từ tôi.

Lệnh để kiểm tra khóa riêng của bạn là:

openssl rsa -in /etc/httpd/certs/server.key -check

thay thế /etc/httpd/certs/server.key bằng đường dẫn đầy đủ đến khóa riêng của máy chủ của bạn và nếu tất cả đều tốt bạn sẽ thấy:

RSA key ok

Hy vọng nó sẽ giúp được ai đó và btw, máy chủ của tôi là CentOS 7.6 với Apache / 2.4.6

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.