• 締切済み

openssl関数

<?php $dn = array( 'countryName' => 'JP' ,'stateOrProvinceName' => 'Tokyo' ,'localityName' => 'Shibuyaku' ,'organizationName' => 'HOGE' ,'organizationalUnitName' => 'hogehoge' ,'commonName' => 'example.com' ,'emailAddress' => 'hoge@example.com' ); $pkeypass = '1234'; $numofdays = 365; $pkey = openssl_pkey_new(); $csr = openssl_csr_new($dn, $pkey); $sscert = openssl_csr_sign($csr, null, $pkey, $numofdays); $publickey = null; $privatekey = null; $csrStr = null; openssl_x509_export($sscert, $publickey); openssl_pkey_export($pkey,$privatekey,$pkeypass); openssl_csr_export($csr, $csrStr); echo $publickey; // 公開鍵 echo $privatekey; // 秘密鍵 echo $csrStr; // CSR 上記のプログラムで生成される公開鍵と秘密鍵は乱数的に生成されているのでしょうか? あと $pkeypass = '1234'; と echo $csrStr; の部分がどういった理由で記述されているのかイマイチわかりません。。 よろしくお願いいたします。

みんなの回答

回答No.2

>もう一つの質問である、「乱数的に発生させているのか?」 見落としていました。 公開鍵と秘密鍵は乱数で生成されます。 ソースコードを見たわけではありませんが、/dev/urandom など安全な乱数が使われるはずです。

回答No.1

$pkeypass = '1234'; 秘密鍵に掛けるパスワードです。秘密鍵で復号化や署名処理をする場合に、このパスワードが必要。 echo $csrStr; 上記プログラムでは自己署名していますが、後でVerisignなどにきちんと署名してもらいたいならば、ここで出力される「署名要求」が必要。

kou6666
質問者

お礼

わかりやすい回答をありがとうございます。 もう一つの質問である、「乱数的に発生させているのか?」 というのについてもわかりますか?