2015-04-22 13 views
5

Tôi đang cố gắng thực hiện cuộc gọi thử nghiệm đến API của bên thứ ba yêu cầu chứng chỉ ứng dụng khách. Tôi đã tạo một chứng chỉ mới bằng cách sử dụng lệnh này với openssl:Nhận (58) không thể sử dụng chứng chỉ ứng dụng khách (không tìm thấy khóa hoặc cụm từ mật khẩu sai?) Từ curl

req -new -newkey rsa:2048 -nodes -out mycsr.csr -keyout mykey.key 

Sau đó, tôi đã gửi cho họ csr và họ đã gửi lại cho tôi mycert.crt. Tôi nối các cert và key với nhau:

cat mycert.crt mykey.key > mycertandkey.pem 

Cuối cùng, tôi đã thêm mycert.crt vào thư mục ca-giấy chứng nhận và ca-certificates.conf và chạy "update-ca-chứng chỉ --fresh".

Bây giờ, tôi đang cố gắng để thực hiện cuộc gọi curl từ bash bằng cách sử dụng lệnh sau:

curl -X GET --cert mycertandkey.pem -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

Tôi cũng đã thử:

curl -X GET --cert mycertandkey.pem --cacert mycert.crt -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

và:

curl -X GET --cert mycertandkey.pem --cacert mycert.crt --key mykey.key -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 

Và mọi sự kết hợp khác tôi có thể nghĩ đến. Tôi luôn gặp lỗi "curl: (58) không thể sử dụng chứng chỉ ứng dụng khách (không tìm thấy khóa hoặc cụm từ mật khẩu sai?)". Khóa không có cụm mật khẩu. Tất cả các tập tin cert/key có 777 quyền.

Tôi chưa từng làm việc nhiều với các chứng chỉ trong quá khứ và tôi cảm thấy mình đã bỏ lỡ điều gì đó, đặc biệt là vì tôi dường như chỉ có một chứng chỉ. Là cert rằng các công ty khác đã gửi cho tôi một cert hoặc là nó cert khách hàng của tôi? Tôi đã liên kết khóa riêng với cert sai?

Tôi đã tìm thấy rất nhiều thông tin từng phần về trực tuyến này, nhưng nếu có ai biết về một hướng dẫn tốt về chủ đề này, tôi cũng thực sự đánh giá cao điều đó.

Trả lời

4

Thêm cụm từ mật khẩu vào khóa cá nhân của tôi đã giải quyết được sự cố của tôi.

tôi đã sử dụng lệnh sau để thêm cụm từ mật khẩu:

ssh-keygen -p -f mykey.key 

Trước khi tôi có thể chạy lệnh đó thành công, tôi cần phải thay đổi các điều khoản trên các tập tin quan trọng. 777 không đủ hạn chế, và ssh-keygen sẽ không chạm vào nó. Thay đổi các điều khoản để 600 cố định điều đó.

chmod 600 mykey.key 

Sau khi thêm cụm mật khẩu, tôi tạo lại tệp .pem. Bây giờ tôi có thể thực hiện thành công cuộc gọi curl bằng lệnh này:

curl -X GET --cert mycertandkey.pem:mypassphrase -H 'Accept-Encoding: gzip,deflate' -H 'Content-Type: application/json' https://api.URL.com 
Các vấn đề liên quan