Программный ввод данных в сертификат 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

Другие вопросы по тегам