使用OpenSSL以编程方式在X509证书中输入数据

时间:2013-03-10 23:35:47

标签: c cryptography openssl x509

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

1 个答案:

答案 0 :(得分:4)

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

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

  • C =国家/地区
  • ST =州
  • L = locality
  • O = organization
  • OU =组织单位
  • CN =通用名称

只有国家/地区字段具有固定的选择范围。

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