openssl で証明書を発行するときに 16 バイトのシリアル番号を指定するにはどうすればよいですか?
openssl 関数を使用して証明書を発行するときに、いくつかの問題が発生しました。このプロジェクトでは、明らかに 16 バイトの証明書のシリアル番号を指定する必要があります。 0x4C5300000000000000100020004000009 の形式、最後の 3 バイト これは動的に変更され、openssl_csr_sign 関数
resource openssl_csr_sign (mixed $csr ,mixed $cacert ,mixed $priv_key , int $days [,array) を使用するときに問題が発生しました。 $configargs [, int $serial=0 ]] )
最後のパラメータはシリアル番号を指定できますが、通常の int はそのような大きな整数をサポートできません。sprintf('%s', $n) を使用してみました。 )、テキストを直接渡してみました。1バイトだけ書かれているか、0です
解決策を見つけるにはどの方向から始めればよいですか?
サンプルがあると良いでしょう。コード
ありがとうございます!
-----解決策---------
説明:
----------
Certificat 定義 OpenSSL では、最大
20 桁以上の数値シリアル番号を使用できます。
PHP には、シリアル
番号の半分のみを許可する整数制限が組み込まれています ..... より大きな数値にはクリアされた部分があります....
シリアルは数値である必要がありますが問題ありませんただし、整数である必要はありません
、または整数によって制限される必要はありません(より大きな数値を許可します)
------解決策------------------
Certificat 定義 OpenSSL では、最大で数値のシリアル番号を使用できます。
20 桁以上。
PHP には、シリアル
番号の半分のみを許可する整数制限が組み込まれています。.... より大きな番号にはクリアされた部分があります....
これは、openssl はデフォルトで 20 ビット長の整数をサポートしているが、PHP の組み込み int 型はその半分の長さだけで、上位半分はクリアされることを意味しているようです。