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