Программный ввод данных в сертификат X509 с использованием OpenSSL
Я пытаюсь создать сертификат 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
Я понимаю, что это ответ стране, но что означает это "С"? Как составлена эта функция? Могу ли я поставить все, что захочу, вместо "С" и вместо "ПТ"?
1 ответ
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