やりたいことは何でもできますが、セキュリティを少しでも心配している場合や、独自のアプリケーション以外との互換性に関心がある場合は、これを行うべきではありません。
一般に、「独自の」セキュリティ ソリューションは悪い考えです。基準には理由があります。それらはピアレビューされ、テストされており、透明性があります。
しかし、好奇心のために、あなたの質問に何が必要か見てみましょう.
まず、公開鍵が必要です。現在、安全な推奨値は約 2048 ビットまたは 256 バイトです。キーだけで、すでに最大の 250 バイトを超えています。
次に、署名が必要です。標準の署名は、鍵のサイズと同じになります: 2048 ビット (256 バイト)。
次に、身分証明書が必要です。あなたは身分証明書が何であるかを言いませんでした。それが「Identity 1」という文字列だとしましょう。これには約 10 バイトが必要です。また、非常に制限的であり、あまりうまくスケーリングしません。
発行者 ID が必要かどうかについては言及していませんが、それをさらに 10 バイト入れましょう。
シリアル番号はどうですか?これらの証明書が危険にさらされた場合、これらの証明書を取り消す方法が必要ですか? 署名アルゴリズムを特定しますか、それとも常に同じになりますか? 証明書の有効期限を希望しますか? 使い方は?証明書が持つことができる役割を区別したいですか? これらすべてがバイト数に追加されます。
前の段落で何もしたくないとしましょう。それがなければ、すでに合計 532 バイトになっています。
そして、フォーマットについてはどうですか?おそらく、これらすべてのバイトをくっつけることはできません。証明書の値には、ある種の構造化されたフォーマットが必要です (X509 で使用される ASN.1 エンコーディングに似ています)。これにより、合計にさらにバイトが追加されます。
したがって、OpenSSL によって生成された証明書が簡単に 650 バイトを超える理由がわかります。
肝心なのは、これを何に使用するかによって異なるということです。独自のサンドボックスで遊んでいるだけで、互換性やセキュリティには関心がありませんか? 次に、独自の証明書形式を作成します。それ以外の場合は、標準に固執してください。