想象一下,我想成为颁发自己证书的证书颁发机构。我希望能够使用我想要的字段生成自己的证书。无论如何都可以这样做吗?使用OpenSSL或任何其他库?我希望能够创建一个非常紧凑的证书,该证书不再具有公钥,签名和标识。最大约250字节的东西,与使用openSSL生成的证书相比要少得多,大约950字节。
我希望我的证书所在的字段是:
使用的算法应为ECDSA 224 ou 256,具有SHA 256,到期时间,生成时间,允许撤销证书并携带标识。
答案 0 :(得分:2)
你可以做任何你想做的事情,但是,如果你一直担心安全问题,或者如果你有兴趣与你自己以外的应用程序兼容,你就不应该这样做。
一般而言,“滚动自己的”安全解决方案是一个不好的想法。有标准是有原因的。他们经过同行评审,测试并且是透明的。
但为了好奇,让我们来看看你的问题所需要的内容。
首先,您需要一个公钥。目前,安全建议大约是2048位或256字节。只有密钥,我们已经超过了250字节。
接下来,您需要签名。标准签名将等于密钥大小:2048位(256字节)。
然后你需要识别。你没有说出身份证明是什么。让我们说它是字符串,“身份1”。这占用大约10个字节。它也非常有限,并且不能很好地扩展。
你没有提到你是否想要一个发行人身份,但是让我们把它扔进另外10个字节。
串口#怎么样?如果这些证书被泄露,您是否想要撤销这些证书?您想要识别签名算法,还是总是相同?您想要证书上的到期日期吗?用法怎么样?您想区分证书可以具有哪些角色?所有这些都增加了字节数。
假设您不想要上一段中的任何内容。没有它,我们已经达到了532个字节。
格式化怎么样?我们可能不能只将所有这些字节粘在一起。证书值需要某种结构化格式(类似于X509中使用的ASN.1编码)。这将为总数添加额外的字节。
因此,您可以看到为什么OpenSSL生成的证书可以轻松超过650个字节。
底线是它取决于您打算使用它的目的。您是否只是在自己的沙箱中玩游戏而对兼容性或安全性不感兴趣?然后继续制作自己的证书格式。但除此之外,坚持标准。