SSL ASN1编码例程和x509证书例程错误

11

直到昨晚和今天,我才完全接触到与安全套接字层相关的任何内容。为了进行应用程序注册过程并在我编写的应用程序中实现OAuth,我需要获取自签名证书。我已经完成了一个不错的教程,介绍如何生成证书,你可以在这里找到它。如果你没有点击链接来查明这一点,我是一个Ubuntu用户。我一直试图生成一个以PEM格式编码的自签名1024位RSA密钥x.509证书。在设置配置并按照教程上的步骤完成一切(当然,除了将与环境相关的数据指定为我的环境之外),生成新证书和密钥的命令如下:

强制SSL在备用位置(服务器配置文件)中查找配置文件:

export OPENSSL_CONF=~/myCA/exampleserver.cnf

生成证书和密钥:

openssl req -newkey rsa:1024 -keyout tempkey.pem -keyform PEM -out tempreq.pem -outform     PEM

执行这两个命令后,将显示以下内容:

Generating a 1024 bit RSA private key
...++++++
...............++++++
writing new private key to 'tempkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----

我输入我的密码短语,但一直收到的错误是:

problems making Certificate Request
3074111688:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too      large:a_object.c:109:
3074111688:error:0B083077:x509 certificate    routines:X509_NAME_ENTRY_create_by_txt:invalid field name:x509name.c:285:name=organizationUnitName
5个回答

25

在我按照您提到的同一教程操作时,我遇到了类似的问题。在我的情况下,错误信息是:

problems making Certificate Request
140098671105696:error:0D07A097:asn1 encoding routines:ASN1_mbstring_ncopy:string too long:a_mbstr.c:154:maxsize=2

我发现我写的一些字符串应该只有两个字符(maxsize=2),但是实际上却很长。后来我回到配置文件,很快就发现我写了国家的全名而不是两位字母的简码,这解决了我的问题。


2

虽然我对这个过程不太熟悉,但看起来"无效字段名:x509name.c:285:name=organizationUnitName"意味着您的组织单位名称无效。

根据digicert.com的说法:组织单位是您公司订购证书的任何部门,例如会计、市场营销等。


0

这取决于你的配置文件中有什么。OpenSSL CA 工具会在文件中查找一些部分,这些部分又会查找其他部分,其中一些部分名称是强制性的,而某些部分名称/值对也是强制性的... 这个文件提供了相当大的配置空间。

当 OpenSSL 在不同的场景下无法识别部分内的名称时,就会出现你提到的错误。例如,在添加用于终端实体证书的自定义 OID 时,以及在自定义 CA 证书内容时都可能会出现此错误。

如果您可以发布您的配置文件和预期的证书结果,我们可以提供帮助。同时,您能否说明您打算将证书用于什么目的(例如,在生产 Web 服务上安全地保护客户端会话或其他方面)。


0

我遇到了类似的问题。我按照GitHub上的建议使用countryName_default参数,但是在我的openssh.exe中似乎不存在这个参数,与GitHub上的建议相反。

一旦我从SSL xxx.conf文件的[ req_distinguished_name ]部分中删除了任何xxx_default参数,证书的创建就成功了。

这在Windows 10上运行良好。


0

我曾经遇到过同样的问题,将 C=USA 改为 C=US 即可解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接