2013-05-20 21 views
7

Tôi thiếu một số điều cơ bản và rõ ràng về việc ký CSR của khách hàng với lệnh openssl.Làm thế nào để ký CSR của khách hàng với openssl?

Tôi có (mô phỏng) hai tổ chức, một là tổ chức của tổ chức phát hành chứng chỉ (tồn tại ở California) và tổ chức khác là tổ chức khách hàng ở trạng thái WA.

Tôi đã tạo cơ quan cấp chứng chỉ trên hệ thống Linux có lệnh openssl theo các bước sau. http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

Tôi hiện có hai tệp 1. cakey.pem chứa khóa cá nhân của CA. Riêng tư này cũng được liên kết với cụm mật khẩu. 2. cacert.pem chứa chứng chỉ tự ký của CA

Tiếp theo, tôi muốn ký tất cả CSR từ khách hàng. Một khách hàng từ tiểu bang Washington gửi cho tôi một tập tin client-csr.pem. Tôi đang đọc trang người đàn ông này về việc ký CSR và các ví dụ ở cuối. http://www.openssl.org/docs/apps/ca.html

Lệnh tôi đang thử và thông báo lỗi như sau: Tôi chạy các lệnh này trên hệ thống của CA, cùng một hệ thống mà tôi đã tạo cakey.pem (khóa riêng của CA) và cacert.pem (CA's tự ký giấy chứng nhận)

$ openssl ca -in demoCA/csrs/client-csr.pem -out client-cert.pem 
Using configuration from /usr/lib/ssl/openssl.cnf 
Enter pass phrase for ./demoCA/private/cakey.pem: 
Check that the request matches the signature 
Signature ok 
The stateOrProvinceName field needed to be the same in the 
CA certificate (California) and the request (WA) 

câu hỏi đặt ra là tại sao phải tên nhà nước là như nhau cho cả CA-certificate và client-CSR.

khách hàng là KHÔNG trong "California" và vì thế khi họ tạo ra CSR, họ đặt tên tiểu bang của riêng mình (WA) Là một cơ quan cấp chứng chỉ, tôi đã xác minh rằng khách hàng thực sự ở dạng WA và tệp CSR thực sự đến từ chúng. Tôi muốn ký CSR này và gửi lại chứng chỉ cho khách hàng.

+0

Vui lòng kiểm tra tệp cấu hình của bạn. Điều này phải được thực thi bởi cấu hình, không phải bởi OpenSSL và X.509. – doptimusprime

Trả lời

6

Đã giải quyết. Cảm ơn dbasic.

Trên hệ thống của CA nơi hoạt động ký kết diễn ra, tạo một bản sao của /etc/ssl/openssl.conf và sửa đổi nó và tạo tệp cấu hình mới. Sử dụng bản sao đã sửa đổi đó khi ký tên.

cp /etc/ssl/openssl.cnf ./openssl-for-signing-csrs.cnf 

Và sửa đổi 'countryName', stateOrProvinceName hoặc 'organizationName' thành 'supplied'. Điều này cho thấy rằng chứng chỉ nên sử dụng các giá trị từ CSR và không cố gắng khớp với chứng chỉ (một trong những cố gắng để 'kết hợp' chỉ để tự ký, openssl.cnf mặc định dường như đã được thực hiện để tự ký và không phải cho CA)

80,82c80,82 
< countryName   = match 
< stateOrProvinceName = match 
< organizationName  = match 
--- 
> countryName   = supplied 
> stateOrProvinceName = supplied 
> organizationName  = supplied 
Các vấn đề liên quan