サーバーによって処理される CSR を作成しています。サーバーが処理できるように、subjectNameAlt を設定する必要があります。私は広く検索しましたが、X509_REQ ではなく、通常の X509 証明書でそれを行う方法しか見つけられませんでした。これを行うにはどうすればよいですか (C と OpenSSL を使用します。つまり、X509_get_ext_d2i
but forと同等のものが必要ですX509_REQ
)?
質問する
5783 次
1 に答える
14
プログラムによる
demos/x509/mkreq.c
OpenSSL に付属のファイルを見てください。リクエストを作成し、電子メール アドレスを別名として追加します。簡素化すると、次のことが行われます。
exts = sk_X509_EXTENSION_new_null();
add_ext(exts, NID_subject_alt_name, "email:steve@openssl.org");
X509_REQ_add_extensions(x, exts);
sk_X509_EXTENSION_pop_free(exts, X509_EXTENSION_free);
は次のadd_ext
ように実装されます。
int add_ext(STACK_OF(X509_EXTENSION) *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;
}
コマンドラインから
OPはAPIを要求しましたが、このセクションは他の人のために残します。
https://wiki.cacert.org/FAQ/subjectAltNameopenssl.cnf
は、ファイルを一時openssl-san.cnf
ファイルにコピーしてから、次のように編集することをお勧めします。
[req]
req_extensions = v3_req
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = host1.yourdomain.tld
DNS.2 = host2.yourdomain.tld
于 2013-04-12T08:15:20.607 に答える