“Chứng chỉ khóa công khai và khóa riêng tư không khớp” khi sử dụng chứng chỉ do Godaddy cấp [đã đóng]


86

Tôi đang cố gắng cài đặt chứng chỉ SSL của GoDaddy trên bộ cân bằng tải mới mà tôi đang thiết lập trên Amazon AWS. Ban đầu, tôi đã tạo chứng chỉ tại Godaddy bằng chương trình keytool để cài đặt trực tiếp trên máy chủ Glassfish 3.1 (Amazon linux ami). Tôi không gặp vấn đề gì khi tải thiết lập đó trực tiếp trên máy chủ. Bây giờ tôi cần di chuyển chứng chỉ từ máy chủ web sang bộ cân bằng tải mới. Amazon yêu cầu khóa cá nhân và chứng chỉ phải ở định dạng PEM, vì vậy tôi đã sử dụng công cụ "khóa lại" tại GoDaddy để tạo chứng chỉ mới. Khi tôi tải những thứ đó trong màn hình thiết lập bộ cân bằng tải trên Bảng điều khiển AWS Mgmt, tôi nhận được thông báo lỗi: "Chứng chỉ khóa công khai và khóa riêng tư không khớp".

Đây là cách tôi tạo khóa:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Sau đó, tôi gửi tệp .csr tới GoDaddy trong quá trình "khóa lại". Sau khi khóa lại hoàn tất, tôi tải xuống 2 chứng chỉ mới được tạo (apps.mydomain.com.crt & gd_bundle.crt). Tôi tải xuống chúng chọn (Apache) làm loại máy chủ (Tôi cũng đã thử "khác" và "Cpanel" nhưng tất cả đều giống nhau).

Tại thời điểm này, tôi xóa mã hóa khỏi tệp private.key bằng cách sử dụng lệnh sau:

$ openssl rsa -in private.key -out private.pem

Tại thời điểm này, tôi quay lại bảng điều khiển AWS Mgmt, tạo bộ cân bằng tải, thêm chuyển hướng máy chủ bảo mật và đặt nội dung của các tệp sau vào các trường tương ứng trên màn hình nơi nó yêu cầu thiết lập chứng chỉ ssl:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

Khi tôi nhấp vào "nút tiếp tục", tôi gặp lỗi "Lỗi: Chứng chỉ khóa công khai và Khóa cá nhân không khớp."

-Có cách nào để tôi có thể kiểm tra rằng tôi đang nhận được thông báo lỗi hợp lệ từ Amazon không? Có vẻ kỳ lạ với tôi rằng các phím sẽ không khớp khi tôi làm theo hướng dẫn của GoDaddy khá chặt chẽ.

Tôi đã thử tạo tệp private.key mà không có mã hóa RSA trước khi tạo .csr và điều đó dường như không tạo ra bất kỳ sự khác biệt nào.

Tôi cũng giả định rằng các tệp .crt mà tôi đang tải xuống từ GoDaddy có định dạng .PEM, nhưng tôi không chắc chắn về cách xác minh điều này.

Có ý kiến ​​gì không?


1
Stack Overflow là một trang dành cho các câu hỏi về lập trình và phát triển. Câu hỏi này có vẻ lạc đề vì nó không phải về lập trình hay phát triển. Xem những chủ đề tôi có thể hỏi tại đây trong Trung tâm trợ giúp. Có lẽ Super User sẽ là nơi tốt hơn để hỏi. Ngoài ra, hãy xem Tôi đăng câu hỏi về Dev Ops ở đâu? .
jww

Bài này đã hơn 3 năm, tại sao phải chuyển nó đi?
Felby

1
Felby - folks thường nói, "... nhưng hãy xem bài này và bài kia". Vì vậy, nó không đủ để giữ cho các bài viết mới ngăn nắp - ít nhất chúng ta cũng phải nhận được thông báo trên các bài viết cũ. Và giá trị của nó là bao nhiêu, tôi không nghĩ đó là một câu hỏi tồi. Nó chỉ hơi lạc đề đối với Stack Overflow.
jww

@Felby bạn nên xem xét câu trả lời này để chấp nhận. Đây là giải pháp mà hầu hết các nhà phát triển đang tìm kiếm khi vấn đề này xảy ra với AWS.
Noel Baron

Câu trả lời:


61

Đối với tôi, đó là một bước dễ dàng gồm hai bước:

  1. Chuyển đổi khóa cá nhân thành PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Chuyển đổi chứng chỉ và gói chứng chỉ sang PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt


1
Câu trả lời cụ thể này thực sự đã giúp tôi. Cảm ơn Jonathan. Đối với hồ sơ, yourdomain.crt là khóa công khai, chứng chỉ mà bạn nhận được từ nhà cung cấp của bạn, (có thể là một cer quá)
user_v

tôi tiếp tục gặp lỗiWARNING: can't open config file: /etc/pki/tls/openssl.cnf
tq

2
@tq - một số lệnh OpenSSL cũng có một -configtùy chọn. Sử dụng nó để chỉ định đường dẫn đến tệp cấu hình bạn đang sử dụng.
jww

@felby Nên đánh dấu câu này là câu trả lời được chấp nhận. Đây là câu trả lời duy nhất không tạo ra vấn đề tin cậy SSL với các thiết bị iOS.
Noel Baron

Câu trả lời này thực sự hữu ích với SSL ký tự đại diện. Bạn phải chuyển đổi cả tệp domain.crt và gd_bundle.crt.
Ducle

40

Chỉ dành cho bản ghi và bất kỳ ai khác đang cố gắng tìm ra nó:

yourdomain.key -> lệnh terminal: sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> khóa riêng

yourdomain.crt -> khóa công khai

gd_bundle.crt -> chuỗi chứng chỉ

và bạn tốt để đi :)


2
OMG, tôi đã mất rất nhiều giờ với sự cố, bạn vừa cứu tôi! Tôi đã mua chứng chỉ RapidSSL: mẹo là 1) chuyển đổi khóa riêng tư như bạn đề xuất ở đây và 2) đảo ngược thứ tự của các chứng chỉ trong chuỗi chứng chỉ do RapidSSL cung cấp. Cảm ơn!
MiniQuark

tiếp tục yêu cầu tôi nhập mật khẩu nhưng chứng chỉ nhanh chóng của tôi đã được tạo mà không có
tq

Lệnh sudo sẽ yêu cầu mật khẩu quản trị viên, trừ khi tài khoản của bạn được thiết lập để không yêu cầu mật khẩu thông qua một số phương pháp khác nhau. Đó có phải là mật khẩu bạn đang đề cập không?
Chris J

Để thêm thứ gì đó mà người cần nó có thể tìm thấy nó, chúng tôi đã nhận được chứng chỉ Host Gator từ một khách hàng và nó có vẻ được thiết lập khá độc đáo - không có chuyển đổi pem và gói CA đã được nối với nhau. Tuy nhiên, sẽ không đi vào Amazon. Điều tương tự với thứ tự của các chứng chỉ trong gói. Bằng cách đảo ngược thứ tự, nó đã đi vào và hoạt động.
CargoMeister

23

Có vẻ như vấn đề là do cách tôi sao chép nội dung của khóa và chứng chỉ vào Bảng điều khiển quản lý AWS. Tôi đang sử dụng máy tính để bàn Ubuntu chạy trong Virtual Box trên máy tính để bàn Windows 7; sao chép và dán các giá trị từ màn hình gedit vào trình duyệt đang chạy trên hộp Windows. Khi tôi mở khóa và các tệp cert trên cùng một hộp với trình duyệt web (trong trường hợp này là Windows), các chứng chỉ đã hoạt động tốt. Tôi đoán một số phần của tệp không được hoàn thiện chính xác khi sử dụng bảng mạch clip được chia sẻ giữa máy khách Virtual Box và máy chủ. Trường hợp đóng cửa.


Bạn có thể chấp nhận câu trả lời của mình để mọi người biết nó đã được giải quyết không?
Phil Sturgeon

2
Odd, tôi nghĩ rằng tôi đã chấp nhận rằng từ lâu ...
Felby

7

Chúng tôi đã tìm thấy một giải pháp thay thế cho vấn đề này. Chúng tôi đã gặp cùng một triệu chứng với cùng một lỗi.

Sau đó, chúng tôi đã thử nhập lại mã pem một lần nữa, nhưng lần này chúng tôi đảm bảo nhấn enter một lần và đảm bảo con trỏ nằm trên một dòng trống ở cuối mỗi cửa sổ. Sau đó, chúng tôi đã lưu nó. NÓ ĐÃ LÀM VIỆC.

Điều này đã giải quyết vấn đề của chúng tôi, vì vậy nó có thể giải quyết nó cho những người khác.


1

Một chút gotcha. Tôi đang sử dụng hộp Windows (Win 7 Pro) và khi tôi sử dụng cổng cửa sổ của OpenSSL, các tệp xuất ra có các ký tự cuối dòng (LF) kiểu Unix.

Tôi đã phải chuyển đổi tệp sang kiểu Windows (CRLF) để tải lên khóa cá nhân.


0

Tôi có thể gợi ý cho bạn một giải pháp thay thế và một thông tin cho bạn. Nói chung tất cả các chứng chỉ đều có định dạng tệp PEM. Bạn chỉ có thể mở sổ ghi chú hoặc bất kỳ trình soạn thảo văn bản nào và kéo các tệp bạn nhận được ở định dạng tệp .crt. Thường được gọi là tệp .PEM. Nếu chứng chỉ được tải trong keytool của bạn, bạn có thể xuất chứng chỉ dưới dạng tệp pfx từ keytool. Sau đó, bạn có thể tách tệp pfx khỏi khóa riêng tư khỏi tệp pfx. Bởi vì tệp pfx là sự kết hợp giữa chứng chỉ của bạn và khóa cá nhân, vì vậy bạn có thể lấy riêng tệp khóa cá nhân và sử dụng nó trên aws amazon của bạn.

Tôi nghi ngờ có thể có một cách khác để cài đặt chứng chỉ. Có thể bạn có thể liên hệ với cơ quan cấp chứng chỉ và có cách nào để chứng chỉ của bạn được cấp lại.

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.