Подтвердить что ты не робот

Как отменить сертификат openssl, если у вас нет сертификата

Я сделал сертификат openssl, подписанный CA, созданным на локальной машине.

Этот сертификат был удален, и у меня его больше нет.

Невозможно создать другой сертификат с тем же общим именем, потому что openssl не разрешает его и генерирует ошибку:

failed to update database
TXT_DB error number 2

Как я могу отменить сертификат для создания другого с тем же общим именем?

4b9b3361

Ответ 1

(На основе ответ Nilesh). В конфигурации по умолчанию openssl сохранит копии всех подписанных сертификатов в /etc/ssl/newcerts, названный по его номеру индекса. Поэтому grep /etc/ssl/index.txt, чтобы получить серийный номер ключа, который должен быть отменен, например. 1013, выполните следующую команду:

openssl ca -revoke /etc/ssl/newcerts/1013.pem #replacing the serial number

-keyfile и -cert, упомянутые в ответе Nilesh, необходимы только в том случае, если это отклоняется от настроек openssl.cnf.


В качестве альтернативы вы также можете изменить /etc/ssl/index.txt.attr на строку

unique_subject = no

чтобы разрешить несколько сертификатов с одним и тем же общим именем. Если вы опубликовали исходный сертификат, то предпочтительным решением является отмена старого, даже если вы не запускаете сервер OSCP или не предоставляете CRL.

Ответ 2

Я не пробовал это, но похоже, что вам нужно что-то вроде этого.

openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt

openssl автоматически сохраняет копию вашего сертификата в каталоге newcerts. Вы можете проверить это, чтобы получить свой сертификат. К сожалению, вам нужен сертификат, чтобы отозвать его. Для получения дополнительной информации см. Следующее: http://www.mad-hacking.net/documentation/linux/security/ssl-tls/revoking-certificate.xml

Ответ 3

Как и в других ответах, openssl CA обычно хранит копию подписанных сертификатов в подкаталоге (newcerts или certs, или keys с easyrsa. Найдите определение new_certs_dir в файле openssl.cnf вашего органа или -outdir опция в скриптах).

Таким образом, канонический способ сделать что-то вроде:

openssl ca -config openssl.cnf -revoke newcerts/hello-world.pem

Однако я добавляю этот ответ, чтобы отметить, что в текущих версиях openssl ca -revoke ..., по-видимому, только обновляет файл index.txt (тем не менее он запрашивает пароль закрытого ключа, который ставится под сомнение там) так что если у вас действительно нет резервной копии сертификата, но у вас все еще есть index.txt или какой-либо способ получить серийный номер, вы можете найти/составить строку сертификата и изменить ее:

# before
V   291008172120Z       6DB67443D7E6C2D95D6E2F7F264C05F944964049    unknown /C=FR/CN=coucou.com
# after
R   291008172120Z   191011172218Z   6DB67443D7E6C2D95D6E2F7F264C05F944964049    unknown /C=FR/CN=coucou.com

# Format is 6 fields, tab-separated, and filename is usually 'unknown' :
# CRL does not contain nor need the subject so if unavailable, just make up something close
V/R/E   expiration-date revocation-date serial-number   filename    subject

(протестировано с OpenSSL 1.1.1c. В некоторых других версиях/средах серийный номер может быть намного короче)

openssl ca -config openssl.cnf -gencrl -crldays 30 -out crl.pem будет фактическим шагом для отзыва сертификата, создавая подписанный список с использованием закрытого ключа органа.