Конструктор запросов OCSP

Я проверял состояние OCSP определенных конечных точек, используя ответ, размещенный по следующему адресу: [1]: Как проверить отзыв сертификата клиента OCSP с помощью Python Библиотека запросов?

Я столкнулся с проблемой при попытке проверить статус oscp для сертификатов, выданных zeroSSL, в том смысле, что статус возвращается как неавторизованный, однако проверка его через какой-либо онлайн-веб-сервис вернула статус как Good.

Изменил алгоритм с sha256 на sha1 в построителе запросов ocsp, и это сработало. Где определяется этот алгоритм хеширования, это алгоритм, который сервер ocsp использует для подписи запроса, который я предполагаю ..?

Как мне заранее найти алгоритм, используемый сервером ocsp, или можно заранее определить алгоритм хеширования, который использует сервер ocsp?

def Get_OCSP_ReqBuilder(clientcert,issuercert,ocsp_location):
    builder = OCSPRequestBuilder()
    req = builder.add_certificate(clientcert,issuercert,SHA256()) # Replaced A SHA1() here.
    req2 = req.build() 
    req_path = base64.b64encode(req2.public_bytes(serialization.Encoding.DER))
    ocsp_requestencoded = urljoin(ocsp_location + '/', req_path.decode('ascii'))
    return ocsp_requestencoded

person Teja    schedule 21.02.2021    source источник


Ответы (1)


Из того, что я видел, SHA1 - хорошее место для начала выполнения запросов OCSP. Ранние версии OCSP RFC требовали, чтобы респонденты OCSP поддерживали его, поэтому он стал стандартом. В x509 docs говорится, что единственная поддерживаемые алгоритмы - это SHA1, SHA224, SHA256, SHA384 и SHA512, поэтому, если вы хотите быть надежными, вы можете реализовать небольшую резервную процедуру для проверки других. Даже попробовать их все было бы не так уж плохо, если бы вам пришлось.

Я столкнулся с той же проблемой, что и вы: статус ответа неавторизован для запросов, хешированных с помощью SHA256, но успешных, когда я использовал SHA1. Это расстраивает, потому что в протоколе нет ничего, что определяло бы способ запроса поддерживаемых алгоритмов, а узкий диапазон ответов ограничен и не очень информативен, поэтому в конечном итоге системы выдают бесполезные сообщения об ошибках. Я бы, наверное, разобрался с ним быстрее, если бы ответ был искажен как запрос, по сравнению с неавторизованным.

person Chris Launey    schedule 23.04.2021