Я создаю api для модификации сертификатов X509
в C, и я хочу добавить способ удаления расширения (например, subjectNameAlt
). Как мне это сделать через API OpenSSL?Как удалить расширение из X509?
ответ
Вы можете использовать X509_NAME_delete_entry()
функцию для этого:
X509_NAME_delete_entry() удаляет запись из названия в положении LOC. Удаленная запись возвращается и должна быть освобождена.
Man страница: http://linux.die.net/man/3/x509_name_delete_entry
Edit:
Чтобы действительно получить и удалить расширение, вы можете использовать следующие функции:
X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
Пример:
int idx = X509_get_ext_by_NID(cert, nid, -1); //get the index
X509_EXTENSION *ext = X509_get_ext(cert, idx); //get the extension
if (ext != NULL){ //check that the extension was found
X509_delete_ext(cert, idx); //delete the extension
X509_EXTENSION_free(ext); //free the memory
}
Ответ на chacham15 неверен. Как заявил the documentation:
X509v3_get_ext()
[иX509_get_ext()
] извлекает расширение LOC изx
. Индекс loc может принимать любое значение от 0 доX509_get_ext_count(x) - 1
. Возвращаемое расширение является внутренним указателем, который не должен быть освобожден приложением.
Правильный способ бесплатного продления заключается в следующем.
int idx = X509_get_ext_by_NID(cert, nid, -1); //get the index
X509_EXTENSION *ext = X509_get_ext(cert, idx); //get the extension
if (ext != NULL){ //check that the extension was found
X509_EXTENSION *tmp = X509_delete_ext(cert, idx); //delete the extension
X509_EXTENSION_free(tmp); //free the memory
}
Был ли ответ чачама правильным 4+ года назад? –
Im confused ... «правильный» способ, который вы написали, выглядит идентично примеру из отмеченного ответа. – chacham15
- 1. Как изменить расширение с X509?
- 2. Удалить расширение из Vs2013
- 3. удалить расширение из переменной filename
- 4. Как удалить расширение из строки (только реальное расширение!)
- 5. Строка из имен файлов - Как удалить расширение?
- 6. Как удалить расширение stackoverflow из VS 2013
- 7. Как удалить расширение Firefox из командной строки?
- 8. Fortran: как удалить расширение файла из символа
- 9. Как удалить расширение .aspx из url
- 10. Как удалить расширение .php из URL?
- 11. Как удалить расширение из имени файла?
- 12. как удалить .php расширение из URL
- 13. Как удалить расширение файла из имени файла?
- 14. Как удалить расширение .php из адресной строки?
- 15. Как удалить расширение HTML из URL?
- 16. Как удалить расширение .php из URL?
- 17. Как удалить расширение файла из Mod_rewrite?
- 18. Как удалить расширение ios сегодня из приложения
- 19. Удалить расширение PHP из URL
- 20. Удалить расширение из URL (.htaccess)
- 21. Как удалить расширение файла?
- 22. Как удалить расширение Postgres
- 23. как разобрать X509 сертификат ssl заказное расширение «политика сертификата»?
- 24. Перейти: Как добавить расширение (subjectAltName) в x509.Certificate?
- 25. Как удалить расширение позиционного параметра?
- 26. Как удалить нежелательное расширение порога?
- 27. Как удалить расширение в строке
- 28. как удалить расширение в php
- 29. Удалить расширение имени файла
- 30. Как Apache анализирует DN из X509
Thats для выдающегося имени, не так ли? subjectNameAlt не является частью отличительного имени, его частью расширений x509v3. – chacham15
Да, вы правы. X509_NAME_delete_entry() работает только с полями информации сертификата. – Paul
Обновлен мой комментарий на примере того, как работать с расширениями сертификатов. Надеюсь, поможет ! – Paul