2013-10-03 2 views
0

OpenSSL에서 제공하는 예제를 사용하여 v3 확장명의 인증서 요청을 만드는 데 문제가 있습니다. 이 전체 코드는 Openssl/demos/x509/CertRequest에 AuthorityKeyIdentifier 추가

의 mkreq.c에서 찾을 수 있습니다. cert 요청에 x509v3 확장명을 추가하는 것이 좋습니다. 나는 키 사용 또는 주체 대체 이름

add_ext(exts, NID_key_usage, "critical,digitalSignature,keyEncipherment"); 
add_ext(exts, NID_subject_alt_name, "email:[email protected]"); 

을 추가 할 수 있습니다하지만이 작동하지 않는 경우, authorityKeyIdentifier ...

add_ext(exts, NID_authority_key_identifier, "keyid,issuer"); 

를 추가하려고 할 때 add_ext도 mkreq으로 제공됩니다

int add_ext(STACK_OF(X509_REQUEST) *sk, int nid, char *value) 
{ 
X509_EXTENSION *ex; 
ex = X509V3_EXT_conf_nid(NULL, NULL, nid, value); 
if (!ex) 
    return 0; 
sk_X509_EXTENSION_push(sk, ex); 

return 1; 
} 

일부 확장 기능이 작동하는지 아닌지 실마리가 있습니까? 자체 서명을 위해 동일한 확장 기능을 추가하면 ...

답변

0

얼마 동안 다시 세션을 다시 시작한 후에는 인증서 요청을 작성할 때 CA를 알지 못해서이 작업을 수행 할 수없는 것처럼 보입니다.

0

나는 당신의 상황과 관련이 있는지 모르지만 다음과 같이 공유 할 가치가 있음을 알았습니다.

명령 줄에서 자체 서명 된 인증서를 생성 할 때 일부 확장명의 순서가 중요합니다. keyid를 authority key id로 사용하려면 먼저 subjectKeyIdentifier를 선언해야합니다.

subjectKeyIdentifier = hash 
authorityKeyIdentifier = keyid,issuer 

이 경우 authorityKeyIdentifier는 keyid로 채워지고 발급자는 사용되지 않습니다.

반대 순서로 선언하면 authorityKeyIdentifier가 대신 발급자로 채워집니다. 아마도 프로그램이 subjectKeyIdentifier를 기반으로 authorityKeyIdentifier를 초기화하려하기 때문일 수 있습니다.

authorityKeyIdentifier = keyid:always을 선언하면 keyid를 알 수 없으므로 하드 오류가 발생합니다.

누군가 도움이되기를 바랍니다. 저것을 달려들는 것은 나에게 시간이 걸렸다.