2013-03-10 69 views
3

我想創建一個ecdsa證書,但我想以編程方式生成它。我正在使用openssl和C編程。以編程方式在X509證書中使用OpenSSL輸入數據

當我從命令行生成一個證書時,會有多個問題要求我回答其他問題以便在證書中使用。 我想知道如何定義這個問題,以編程方式輸入這些數據。

這是我在網上找到,但我不明白如何插入更多的信息,這確實有效:

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

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

+0

謝謝,這是我真的在尋找:) – mmm 2013-03-11 10:00:06