在C中创建自己的证书结构

在C中创建自己的证书结构,c,openssl,certificate,x509,C,Openssl,Certificate,X509,假设我想成为一个颁发自己证书的证书颁发机构。我希望能够用我想要的字段生成我自己的证书。这是否可能在任何情况下完成?使用OpenSSL或任何其他库?我希望能够创建一个非常紧凑的证书,它将不再有公钥、签名和标识。最大值约为250字节,这与使用openSSL生成的证书(约950字节)相比要少得多 我希望我的证书包含以下字段: 使用的算法应该是ECDSA 224 ou 256,带有SHA 256、到期时间、生成时间、允许撤销证书和携带标识。您可以做任何您想做的事情,但是,如果您关心安全性,或者如果您希望

假设我想成为一个颁发自己证书的证书颁发机构。我希望能够用我想要的字段生成我自己的证书。这是否可能在任何情况下完成?使用OpenSSL或任何其他库?我希望能够创建一个非常紧凑的证书,它将不再有公钥、签名和标识。最大值约为250字节,这与使用openSSL生成的证书(约950字节)相比要少得多

我希望我的证书包含以下字段:


使用的算法应该是ECDSA 224 ou 256,带有SHA 256、到期时间、生成时间、允许撤销证书和携带标识。

您可以做任何您想做的事情,但是,如果您关心安全性,或者如果您希望与您自己以外的应用程序兼容,你不应该这样做

一般来说,“滚动您自己的”安全解决方案是一个坏主意。有标准是有原因的。它们经过同行审查、测试,并且是透明的

但出于好奇,让我们来看看你的问题需要什么

首先,您需要一个公钥。目前,安全建议约为2048位或256字节。仅使用密钥,我们已经超过了您的最大值250字节

接下来,你需要一个签名。标准签名将等于密钥大小:2048位(256字节)

那你需要身份证明。你没说身份证明是什么。假设是字符串“Identity 1”。这将占用大约10个字节。它也是非常有限的,不能很好地扩展

您没有提到是否需要颁发者身份,但让我们再加上10个字节

那连续剧呢?如果这些证书被泄露,您想用什么方法撤销它们吗?您是想识别签名算法,还是总是相同的?您想要证书上的过期日期吗?使用情况如何?是否要区分证书可以具有哪些角色?所有这些都增加了字节数

假设您不想要上一段中的任何内容。如果没有这个,我们已经有532字节了

那么格式化呢?我们可能不能把所有这些字节粘在一起。证书值需要某种结构化格式(类似于X509中使用的ASN.1编码)。这将在总数中添加额外的字节

因此,您可以了解为什么OpenSSL生成的证书很容易超过650字节


底线是,这取决于你打算用它做什么。您只是在自己的沙箱中玩,对兼容性或安全性不感兴趣吗?然后继续制作您自己的证书格式。但是,否则,请坚持标准。

Hi。首先谢谢。我正在努力实施一项车辆通信安全标准。该标准规定,出于性能原因,必须创建精简证书。所使用的算法应为ECDSA224OU256,带有SHA256、到期时间、生成时间、允许吊销证书、标识。我想这就是我所记得的。如果您使用ECDSA,所需的公钥大小将大大减小。但是,对于生成自己的证书标准和PKI,我仍然非常谨慎。错过一些东西很容易,如果你错过了一些东西,后果可能是巨大的。例如,索尼错误地实施了ECDSA解决方案。这是答案。好的,我理解,但这是为了学术目的,了解事物是如何运作的。是否有任何框架或任何东西允许我创建我自己的证书,这将只是我想要的字段?非常感谢,因为我提到这是出于学术目的,所以我必须创建一个证书,其中只包含一些我想要的数据字段。我是否必须自己编程创建它,或者是否有任何框架,在给定算法的情况下,在ECDSA中,它仅使用我在系统中定义的字段生成我的私钥、公钥和证书。我想知道的是,是否有一个软件可以创建自己定义的证书结构。我不知道有任何特定的框架可以满足您的要求。您可以使用OpenSSL创建密钥和签名信息,因此理论上,您可以使用公钥创建自己的“结构”,然后对其进行签名,包括作为“证书”一部分的签名。