Crypt::OpenSSL::X509
x.509証明書を取り扱うOpenSSLラッパモジュール。
use Crypt::OpenSSL::X509;
パッケージをロードする。
my $x509 = Crypt::OpenSSL::X509->new_from_string ($string, $format);
my $x509 = Crypt::OpenSSL::X509->new_from_file ($filename, $format);
x.509証明書を、変数/ファイルから読み込む。$formatは、Crypt::OpenSSL::X509::FORMAT_ASN1(DERフォーマット), Crypt::OpenSSL::X509::FORMAT_PEM のいずれか。
$x509->subject
$x509->issuer
$x509->issuer_hash
$x509->serial
$x509->hash # Alias for subject_hash
$x509->subject_hash
$x509->notBefore
$x509->notAfter
$x509->email # if multiple addresses found, they
are separated by a space
$x509->version
$x509->sig_alg_name
$x509->key_alg_name
$x509->curve
証明書の基本項目を文字列で返す。
$x509->subject_name()->get_entry_by_type('CN')->value() ;
$x509->issuer_name()->get_entry_by_type('CN')->value();
subject/issuerから Common Nameを取り出す。get_entry_by_type のパラメータを変えれば、他の要素も取り出せる。
$x509->is_selfsigned();
自己署名か否かを返す。
$x509->as_string ($format) ;
エンコードされた証明書を返す。$formatは、Crypt::OpenSSL::X509::FORMAT_ASN1(DERフォーマット),
Crypt::OpenSSL::X509::FORMAT_PEM のいずれか。
$x509->modulus() ;
RSAのモジュラスを16進文字列(01:02:03:04:…)で返す。
$x509->bit_length();
モジュラスのビット幅を返す。
$x509->pubkey();
公開鍵を16進文字列(01:02:03:04:…)で返す。RSAならば eの値、ECDSAなら SECフォーマット(04 || x座標 ||
y座標)。
$x509->num_extensions();
x.509拡張の個数を返す。
$x509->extension($ibdex);
出現順インデクスを使って、x.509拡張オブジェクトを返す。
$x509->extensions_by_oid();
$x509->extensions_by_name();
$x509->extensions_by_long_name();
x.509拡張オブジェクトを、OID/短い名前/長い名前をキーとしたハッシュで返す。OIDは、RFC 5280を調べれば分かるが、「名前」が何であるかはドキュメントがないので、keysで調査するしかない。
使用例1:
my $oids = $x509->extensions_by_oid();
my $e =
$oids->{'2.5.29.19'}; # Basic Constraints
$e->object()->name(); # x.509拡張名 例: X509v3 Basic Constraints
$e->as_string(); # 値を文字列で返す 例:: CA:FALSE
使用例2:
my $exts = $x509->extensions_by_name();
my
$e = $exts->{'subjectAltName'};
$e->as_string();