2015-01-14 15 views
21

haproxy không khởi động được nữa, nó hiển thị lỗihaproxy - không thể tải SSL khóa bí mật từ tập tin PEM

bind <ip>:443' : unable to load SSL private key from PEM file ... 

Chúng tôi không thay đổi bất cứ điều gì trên giấy chứng nhận hoặc cấu hình. Kể từ lần khởi động cuối cùng, chúng tôi chỉ thực hiện cập nhật bình thường cho hệ thống.

Để tìm lỗi, tôi đã tạo chứng chỉ hoàn toàn mới (tự ký) nhưng lỗi vẫn tồn tại.

Đây là cấu trúc của tập tin PEM:

-----BEGIN CERTIFICATE----- 
MIIDXjCCAkY... 
-----END CERTIFICATE----- 
-----BEGIN RSA PRIVATE KEY----- 
MIIEpgIBAAKC.... 
-----END RSA PRIVATE KEY----- 

Tôi cũng đã cố gắng để chuyển đổi chìa khóa riêng với

openssl pkcs8 -topk8 -inform pem -in server.key -outform pem -nocrypt -out server_new.key 

nhưng haproxy vẫn thể hiện những lỗi tương tự.

Tôi đang cố gắng hàng giờ nhưng tôi không thể tìm ra lý do. Hãy giúp tôi! Cảm ơn bạn!

Cập nhật:

Sự cố có liên quan đến việc truy cập tệp. Tệp PEM được lưu trữ tại /data/ssl/domainname/domainname.pem. Quyền tập tin là ok. Khi tôi chuyển tệp PEM sang/etc/haproxy thì mọi thứ đều ổn.

Trả lời

7

Sự cố tôi đang gặp phải trên CentOS là SELinux đang cản trở. Để kiểm tra nếu SELinux là vấn đề thực hiện như sau root: setenforce 0, sau đó thử khởi động lại haproxy. Nếu nó hoạt động, có một vấn đề SELinux. (Bạn có thể kích hoạt lại SELinux ngay bây giờ và cố gắng khắc phục sự cố cơ bản bằng lệnh setenforce 1).

Vì tôi có chứng chỉ trong thư mục/etc/haproxy/certificates, lệnh sau hoạt động để nhận quyền phù hợp trên các tệp restorecon -v -R /etc/haproxy (tùy thuộc vào hệ điều hành và cấu hình SELinux của bạn có thể có hoặc không hoạt động).

18

Thứ tự trong đó các tệp chứng chỉ và khóa xuất hiện trong pem là quan trọng. Sử dụng phần sau để tạo tệp pem.

cat example.com.crt example.com.key > example.com.pem 
+1

này là thứ tự trong tập tin pem tôi như bạn có thể thấy trong câu hỏi của tôi ... nhưng nhờ – efdev1234

+1

Câu trả lời này giải quyết vấn đề của tôi. Cảm ơn bạn với cùng một lỗi! Tôi quên ghép các tập tin. – Eye

+0

Điều này có thể đã thay đổi vì tôi nhận được nó hoạt động với khóa riêng đến trước chứng chỉ công khai trong tệp PEM. Tôi đã nhận được cùng một lỗi, nhưng trong trường hợp của tôi đó là bởi vì tôi đã chạy HAProxy trong Docker nhưng quên thêm một khối lượng vào container để HAProxy có thể nhìn thấy PEM. – NickRamirez

0

Vấn đề đối với tôi là một ký tự lạ ở đầu khóa.

Ký tự này không hiển thị khi tôi cat chỉnh sửa tệp vì ký tự là <feff> nếu không được gọi là UTF-8 BOM (Byte Order Mark). Nó chỉ xuất hiện khi tôi mở tập tin trong vim.

Tôi không mong đợi điều này là rất phổ biến, nhưng hy vọng nó sẽ giúp một số người đau đầu.

4

Tôi cũng gặp phải lỗi này. Bạn có thể muốn xóa cụm mật khẩu khỏi khóa cá nhân trước khi bắt đầu tách tóc ra. Nó giải quyết vấn đề cho tôi. Tôi nghĩ rằng HAProxy được yêu cầu yêu cầu bạn nhập lại mật khẩu, nhưng không phải trong trường hợp của tôi bằng cách sử dụng 'sudo /etc/init.d/haproxy restart

Để xóa mật khẩu, hãy thử ' openssl rsa -in [PRIVATE_KEY_FILE] -out nopassphrase.key '

Cụm từ mật khẩu có cần thiết không? Có một cuộc thảo luận trong liên kết bên dưới. https://security.stackexchange.com/questions/70495/ssl-certificate-is-passphrase-necessary-and-how-does-apache-know-it

2

Đối với tôi, vấn đề là do dòng này trong tập tin PEM kết hợp:

----- END CERTIFICATE ---------- BEGIN RSA PRIVATE KEY ---- -

Sau khi tôi chia nó tôi có thể bắt đầu HAProxy và tải nó OK:

* ----- END CERTIFICATE -----

----- BEGIN RSA PRIVATE Phím ---- *

Hy vọng nó giúp

T

Các vấn đề liên quan