2013-05-20 4 views
7

openssl 명령을 사용하여 클라이언트의 CSR 서명에 대한 기본 사항과 확실한 내용을 놓치고 있습니다.openssl을 사용하여 클라이언트의 CSR에 서명하는 방법은 무엇입니까?

저는 (캘리포니아에 존재하는) 인증 기관의 조직과 WA 상태에있는 클라이언트 조직 인 두 조직을 가지고 있습니다.

다음 단계에 따라 openssl 명령을 사용하여 Linux 시스템에 인증 기관을 만들었습니다. http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

지금은 CA의 개인 키를 포함 1 cakey.pem에 담겨 두 개의 파일이 있습니다. 이 개인은 또한 암호문과 연관되어 있습니다. 2. CA의 자체 서명 된 인증서가 포함 된 cacert.pem

다음으로 클라이언트에서 모든 CSR에 서명하고 싶습니다. 워싱턴주의 클라이언트가 client-csr.pem 파일을 보냅니다. 필자는 CSR에 서명하는 방법과 끝에있는 예제에 대해이 man 페이지를 읽었습니다. http://www.openssl.org/docs/apps/ca.html

내가 시도하는 명령과 오류 메시지는 다음과 같습니다. 나는이 시스템을 CA의 시스템에서 실행합니다.이 시스템은 cakey.pem (CA의 개인 키)과 cacert.pem (CA 자체 서명 인증서)

$ 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) 

문제는

클라이언트는 "캘리포니아"에 있지 않습니다. 이유는 상태 이름은 CA 인증서 및 클라이언트 CSR 모두 동일해야하고 그래서 그들은 만들 때 CSR, 그들은 자신의 주 이름 (WA)을 붙였습니다. 인증 기관으로서 저는 클라이언트가 실제로 WA에 있고 CSR 파일이 실제로 왔음을 확인했습니다 그들. 이 CSR에 서명하고 인증서를 고객에게 돌려주고 싶습니다.

+0

구성 파일을 확인하십시오. 이것은 OpenSSL 및 X.509가 아니라 구성에 의해 시행되어야합니다. – doptimusprime

답변

6

해결되었습니다. 감사합니다 dbasic.

서명 작업이 수행되는 CA 시스템에서 을 복사하여 /etc/ssl/openssl.conf를 복사 한 다음 수정하고 새 구성 파일을 만듭니다. 서명 할 때 수정 사본을 사용하십시오.

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

'countryName', stateOrProvinceName 또는 'organizationName'을 'supplied'로 수정하십시오. 이는 인증서가 CSR의 값을 사용해야하며 인증서와 일치하지 않도록 시도합니다 (자체 서명 만 '일치'하려고 시도합니다. 기본값 인 openssl.cnf는 자체 서명을 위해 만들어진 것처럼 보입니다. CA가 아님)

80,82c80,82 
< countryName   = match 
< stateOrProvinceName = match 
< organizationName  = match 
--- 
> countryName   = supplied 
> stateOrProvinceName = supplied 
> organizationName  = supplied 
관련 문제