通常 (事実上、常に実際にそうです!) 署名は、証明書の識別名をカバーするだけではありません。他のすべて(シリアル、有効期限など)も同様です。
そのため、証明書のサイズを小さくすることは難しくありませんが、発行者による署名が即座に無効になります。
ただし、場合によっては、他のことを行うことができます。それは、証明書の署名部分を完全に分配/無視することです。公開鍵だけに注目してください。
のようなものを使用してください
cat somecert.pem | openssl x509 -pubkey -nout
公開鍵だけを取得します。したがって、すべての X509 を放棄し、本質的には PKI がなくなりました。生の公開鍵と秘密鍵のペアだけです。
次に、アプリケーションで、独自の暗号を発明するというかなり許しがたい失言をコミットします-そして、その公開鍵の所有者に、その秘密鍵でNONCEのようなものに署名させます; 署名を検証します。例えば
# the 'server' sends a nonce to the client
openssl rand -base64 128 > send-to-client
次に、クライアントで署名されます
サーバーからの猫のメッセージ | openssl pkeyutl -inkey privkey.pem -sign | base64 > サーバーに送信
サーバー上でこれを確認します
cat msg-from-client | openssl pkeyutl -in pubkey-of-client.pem -verify
そしてそこに形をとります。しかし、あなたが優秀な暗号学者やプロトコル設計者でない限り、このような (そして上記のような) スキームには欠陥や落とし穴がたくさんあります。
しかし理論的には、数 1000 バイトの RSA キーしか使用できません。または数百バイトの楕円曲線ベースのキー。