私の目標:証明書を作成してダウンロードしたい。
次のシナリオがあります。
アウトラインで :
request : ブラウザ ---> PHP ページ ---> PHP Rest Web サービス ---> bash
応答: bash ---> PHP Rest Web サービス ---> PHP ページ ---> ブラウザ
詳細に :
- PHP ページから呼び出された REST Web サービスは次のことを行います。
- bash で証明書を作成し、pfx ファイルとしてエクスポートします。
- 証明書を bash ファイルから byte stream として返します。
hexdump -b $exportedcert
Web サービスから返される出力はバイトです (これはほんの一部です):
0000000 060 202 024 071 002 001 003 060 202 023 377 006 011 052 206 110 0000010 206 367 015 001 007 001 240 202 023 360 004 202 023 354 060 202 0000020 023 350 060 202 016 237 006 011 052 206 110 206 367 015 001 007 0000030 006 240 202 016 220 060 202 016 214 002 001 000 060 202 016 205 0000040 006 011 052 206 110 206 367 015 001 007 001 060 034 006 012 052 0000050 206 110 206 367 015 001 014 001 006 060 016 004 010 276 147 122 0000060 363 175 042 303 050 002 002 010 000 200 202 016 130 212 124 302 0000070 271 370 201 316 300 134 133 246 211 062 276 045 241 020 101 155 0000080 057 103 205 232 164 203 265 376 057 067 274 361 057 274 367 110 0000090 251 107 205 130 306 035 267 377 316 223 242 347 363 234 341 052 .....
積み上げたらここに!! このストリームをバイナリに変換してからダウンロードする必要があります。多くのコードを試しましたが、結果が得られません。
function hex2bin($data) { //function URL: http://fiddyp.co.uk/code-to-reverse-a-bin2hex-function/ //function author: Andy Bailey $len = strlen($data); for($i=0;$i<$len;$i+=2) { $newdata .= pack("C",hexdec(substr($data,$i,2))); } return $newdata; } $api_url = "http://mydomain/certificates"; try { // @url POST /client_cert $result = $pest->post('/client_cert', $data); $res=explode('"', $result); $hex = hex2bin($res[1]); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=hex.crt"); header("Content-Type: application/octet-stream "); header("Content-Transfer-Encoding: binary");* // Read the file from disk echo $hex; } catch (Pest_NotFound $e) { // 404 echo "Certificate with Name = " . $certName_pfx . " doesn't exist!"; }
証明書をブラウザに追加するときに、証明書が壊れているか無効です。