OpenSSL が提供する例を使用して、v3 拡張機能を持つ証明書要求を作成する際に問題が発生しています。このコード全体は、Openssl/demos/x509/ の mkreq.c にあります。
いくつかの x509v3 拡張機能を証明書要求に追加するとうまくいきます。キーの使用法またはサブジェクトの代替名を追加できます
add_ext(exts, NID_key_usage, "critical,digitalSignature,keyEncipherment");
add_ext(exts, NID_subject_alt_name, "email:steve@openssl.org");
しかし、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;
}
一部の拡張機能が機能し、一部が機能しない理由を誰かが知っていますか? 自己署名に同じ拡張子を追加すると、うまく機能します...