証明書(.pfx)からSubject Alternative Nameを読み込む必要があるiOSアプリケーションを開発しています。OpenSSL証明書からサブジェクトの別名を取得する
Security.frameworkがこの情報を取得する方法を持っていないので、あなたは私がX509_get_subject_name(証明書)を使用してのためだサブジェクト名を読み取るにはOpenSSL(opensslの-1.0.1e)
を使用しています発行者私はX509_get_issuer_name(証明書)を使用しています。
問題はサブジェクト代替名です。私はこの情報を返す機能を見つけることができません。
OpenSSLを使用してSubject Alternative Nameを取得することは可能ですか?どうやって?
編集:
私はMACキーチェーンに証明書をインポートしました。 サブジェクトの代替名についてNTプリンシパル名とRFC 822名が表示されます。
私はこれを試してみましたが、それはNULLを返している:
GENERAL_NAME *name = (GENERAL_NAME*)X509_get_ext_d2i(cert,NID_subject_alt_name, NULL, NULL)
私はこれで証明書を読んでいる:
X509 *cert;
CFDataRef der = SecCertificateCopyData(certificate);
const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);
d2i_X509(&cert,&ptr,len);
私はこれを試しています:(GENERAL_NAME *)X509_get_ext_d2i(証明書、NID_subject_alt_name、NULL、NULL); しかし、私はnullです。それは動作するはずですか? – Freedom
理論的には、証明書がNULLの場合はNULLを取得する必要があります。証明書にサブジェクトの代替名の拡張子がない場合や、複数の名前が存在しない場合は、証明書を証明書にロードするコードと証明書の内容(またはopenssl x509 -in -textの出力)を投稿できますか? –
私はX509_get_subject_name()を使用しています。 Macキーチェーンに証明書をインポートしました。オンになっている主題別名NTプリンシパル名とRFC 822名(同じ値があります)が表示されます。それが問題だろうか? – Freedom