4

我正在尝试创建一个 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”的位置吗?

4

1 回答 1

5

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

您可以使用该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

于 2013-03-11T07:59:08.163 回答