mmm*_*mmm 4 c openssl cryptography 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);
Run Code Online (Sandbox Code Playgroud)
我意识到这个X509_NAME_add_entry_by_txt函数是国家的答案,但是这个“C”是什么意思呢?这个函数是怎么组成的呢?我可以在“C”位置和“PT”位置放置任何我想要的东西吗?
这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