首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用openssl *以最小功率创建CA *

问如何使用openssl *以最小功率创建CA *
EN

Stack Overflow用户
提问于 2015-02-21 15:45:34
回答 2查看 290关注 0票数 2

已经有关于使用openssl (如这 )生成自签名证书的答案。但是,我想要的是一个证书,它只能对预定义网站的流量进行身份验证和加密。

由以下命令生成的证书

代码语言:javascript
复制
 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

将基本约束/证书授权设置为YES,这意味着可以使用它对其他证书进行签名。假设我的域名是mystackoverflow.com,盗取我的私钥的攻击者不仅可以将我的私钥连接到mystackoverflow.com,而且还可以窃取facebook.com或google.com,因为他可以用该私钥签署伪造证书,并得到我的系统的信任。

因此,问题是,我如何最小化这个证书的威力,使它不能签署额外的密钥,签名代码,加密电子邮件或做任何事情,除了保护https连接到一个特定的网站?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-21 21:23:58

我想要的是一个证书,除了认证和加密预定义网站的流量.因此,问题是,我如何最小化这个证书的威力,使它不能签署额外的密钥,签名代码,加密电子邮件或做任何事情,除了保护https连接到一个特定的网站?

这个问题有三个部分。

首先是如何“认证和加密东西”。这是由密钥使用和扩展密钥使用处理的。特别是digitalSignature (签名密钥交换,如Diffie-Hellman)、keyEncipherment (密钥传输,如RSA)、serverAuth等比特。

第二,如何不铸币证书。对于end实体证书(即服务器证书),您可以删除CA=true basic约束,并删除keyCertSign位。您仍然需要一个具有签署end实体证书的能力的中间CA,因为这是应用“此CA只能为这些名称发出”策略的地方。

第三,如何应用诸如“此CA只能为这些名称颁发”这样的策略。根据IETF的RFC 5280中的PKIX规则,您可以在带有名称约束扩展的CA证书中这样做。详情见4.2.1.10节。

在CA/浏览器论坛规则下,您可以这样做,因为它们有策略对象。但我不知道如何在CA/B (可能与IETF相同)下进行操作。

你必须小心IETF设备。他们有扩展,但他们没有政策。因此,您需要确保您正在内部和现有的扩展中工作,而不是伪造新的策略。有关更多细节,请参见PKIX邮件列表上的根据IETF策略签发的证书的OID?。

CA/B论坛很重要,因为浏览器遵循CA/B论坛规则,而不是IETF。CA/B论坛和IETF在几个关键领域有不同的要求。这就是为什么使用OpenSSL创建的证书(遵循IETF准则)在浏览器(遵循CA/B论坛指南)中无法验证的原因。

由以下命令生成的证书:openssl req ...

用来做它,但今天它不是怎么做的。今天,它会生成格式错误的证书(根据用户代理的不同,该证书可能会引起问题,也可能不会造成问题)。对于你引用的问题,有一个特别的答案告诉你为什么不正确,以及如何去做。

票数 2
EN

Stack Overflow用户

发布于 2015-02-21 16:35:21

。。一个盗取我私钥的袭击者。 因此,问题是,我如何最小化这个证书的威力,使它不能签署额外的密钥,签名代码,加密电子邮件或做任何事情,除了保护https连接到一个特定的网站?

如果您担心攻击者可能窃取证书的密钥,然后使用该密钥对其他内容进行签名,则不应创建自签名证书。相反,首先创建您自己的CA。然后创建一个不能用于签署证书并由您自己的CA对其进行签名的叶证书。一旦完成,将CA的私钥放在很远的地方(离线,如果您不需要它来签署更多的证书,甚至销毁它)。

使用此设置,攻击者仍然可以窃取证书的身份,如果它获得其私钥。但是,由于此证书本身不是CA (与正常的自签名证书不同),因此不能用于对新证书进行签名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28647657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档