PHP による証明書キーの生成に関する情報はほとんどありません。長い間検索した結果、最終的に公式ドキュメントで関連情報を見つけました。以下のコードを 2 つの部分に分けてコンパイルしました。証明書キーとデータの暗号化を解除します。それをコピーして 2 つのファイルを作成し、実行するだけです。詳細なコメントが書かれており、PHP プログラマなら誰でも理解できると思います。
generate.php
- $dn = array(
- "countryName" => 'XX', //国が位置する国の名前
- "stateOrProvinceName" => 'State ', // 州が存在する州の名前
- "localityName" => 'SomewhereCity', // 都市の名前
- "organizationName" => 'MySelf', // 登録者の名前
- "organizationalUnitName" => 'Whatever', //組織の名前
- "commonName " => 'mySelf', // パブリック名
- "emailAddress" => 'user@domain.com' // 電子メール
- );
-
- $privkeypass = '111111'; //秘密鍵のパスワード
- $numberofdays = 365; // 有効期間
- $cerpath = "./test.cer" // 証明書のパスを生成します
- $pfxpath = " /test.pfx"; //キーファイルパス
-
-
- //証明書を生成
- $ privkey = openssl_pkey_new();
- $csr = openssl_csr_new($dn, $privkey);
- $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
- openssl_x509_export($sscert, $csrkey) // 証明書をエクスポートします $csrkey
- openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass); // 証明書を生成しますfile
- $fp = fopen($cerpath, "w");
- fwrite($ fp, $csrkey)
- //キーファイルを生成
- $fp = fopen($pfxpath, "w") );
- fwrite($fp, $privatekey) ;
- fclose($fp) ?>
-
-
- crypt.php
$privkeypass = '111111'; //秘密鍵のパスワード $pfxpath = " ./test.pfx" //鍵ファイルのパス $priv_key = file_get_contents($pfxpath); //鍵ファイルの内容を取得します "test"; //暗号化されたデータのテスト test //秘密鍵の暗号化 openssl_pkcs12_read($priv_key, $certs, $privkeypass) //公開鍵と秘密鍵を読み取ります $prikeyid = $certs['pkey']; //秘密鍵- openssl_sign($data, $signMsg, $prikeyid ,OPENSSL_ALGO_SHA1); //暗号化された情報を生成するための登録
- $signMsg = Base64_encode($signMsg) //base64でトランスコードされた暗号化情報
-
-
- //公開鍵復号
- $unsignMsg=base64_decode($signMsg);//base64 デコードされた暗号化情報
- openssl_pkcs12_read($priv_key, $certs, $privkeypass) //公開鍵と秘密鍵を読み取ります
- $pubkeyid = $certs['cert'] / /公開鍵
- $res = openssl_verify($data, $unsignMsg , $pubkeyid); //検証
- echo $res; //検証結果を出力、1:検証成功、0:検証失敗
-
-
- ;コード
-
-
-
-
-
-
-
暗号化と復号化、PHP、OpenSSL
|