【问题标题】:Programmatically input data in X509 Certificate using OpenSSL使用 OpenSSL 以编程方式在 X509 证书中输入数据
【发布时间】:2013-02-26 01:38:00
【问题描述】:

我正在尝试创建一个 ecdsa 证书,但我想以编程方式生成它。我正在使用 openssl 和 C 编程。

当我从命令行生成证书时,会要求我回答其他问题以在证书中使用。 我想知道如何定义这些问题,以编程方式输入这些数据。

这是我在网上找到的,但我不明白如何插入更多信息,这确实有效:

X509 *x; 
x=X509_new(); 
X509_NAME *name = X509_get_subject_name(x); 
X509_set_version(x, 2); 
ASN1_INTEGER_set(X509_get_serialNumber(x), 3); 
X509_gmtime_adj(X509_get_notBefore(x), 0); 
X509_gmtime_adj(X509_get_notAfter(x), (long) 60 * 60 * 24 * 365); 
X509_set_pubkey(x, pk); 
X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, (const unsigned char*) "PT", -1, -1, 0); 

X509_NAME_add_entry_by_txt 函数我知道这是国家的答案,但是这个“C”是什么意思?这个函数是怎么组成的?我可以将任何我想要的东西放在“C”和“PT”的位置吗?

【问题讨论】:

    标签: c cryptography openssl x509


    【解决方案1】:

    C 是表示国家/地区的标准方式,PT 是葡萄牙的正确选择(有关其他国家/地区选项,请参阅 this list)。

    您可以使用X509_NAME_add_entry_by_txt 函数在专有名称中设置其他值,使用正确的前缀:

    • C = 国家
    • ST = 状态
    • L = 地区
    • O = 组织
    • OU = 组织单位
    • CN = 通用名

    只有国家字段有固定的选择范围。

    另请参阅手册页上给出的示例:http://www.openssl.org/docs/crypto/X509_NAME_add_entry_by_txt.html#EXAMPLES

    【讨论】:

    • 谢谢,这就是我真正想要的:)
    猜你喜欢
    • 2010-09-20
    • 2014-09-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多