Отсутствует сертификат клиента: как его восстановить

Это довольно старый синтаксис K & amp; R C (предварительные даты ANSI / ISO C). В настоящее время вы больше не должны его использовать (поскольку вы уже заметили его главный недостаток: компилятор не будет проверять типы аргументов для вас). Тип аргумента по умолчанию по умолчанию соответствует int в вашем примере.

В то время этот синтаксис использовался, иногда можно было найти такие функции, как

foo(p, q) 
{
    return q + p;
}

, который фактически был действительным как типы для foo, p и q по умолчанию int.

1
задан epilot6ke 31 March 2019 в 14:51
поделиться

1 ответ

Похоже, что в хранилище ключей есть запись для нашего закрытого ключа, но не сертификат клиента; перечислены только два сертификата от .p7b с сайта веб-сервисов.

PrivateKeyEntry, который вы показываете в списке keytool , содержит сертификат клиента (BC, KU и NCT) и сертификат CA, который, предположительно, является выдающим (родительским) сертификатом для этого клиента засвидетельствовано (Если вы импортировали эти сертификаты в это хранилище ключей с помощью keytool, то сертификат CA определенно является эмитентом, потому что keytool проверяет это; если вы использовали другой инструмент, он должен выполнить то же требование, но не может.) Вы описываете p7b содержит «второй для сайта веб-сервисов, выпущенного собственным CA корпоративного владельца», но (1) если бы в этом случае keytool не импортировал бы его как часть той же цепочки, и (2) это не имело бы смысла, потому что клиент не нуждается в выданном СА (то есть не самоподписанном) серверном сертификате в своем хранилище ключей или доверенного хранилища, только в сертификате ЦС сервера в своем хранилище доверенных сертификатов, и это как отдельная запись, отсутствующая в PrivateKeyEntry клиента, даже если это общий файл.

Согласно вашему описанию, вы получаете трассировку javax.net.debug=ssl, поэтому посмотрите на ту часть трассировки, куда она загружает хранилище ключей, и убедитесь, что эта запись загружается, и посмотрите на *** CertificateRequest сервера. ] в Cert Authorities, чтобы увидеть, какой CA (ы) он запрашивает (непосредственно до *** ServerHelloDone) и сравнить его (те) с фактическим CA для цепочки в вашем хранилище ключей (неотредактированный). Поскольку вы используете Apache HttpClient, если вы используете одну из перегрузок, которая задает PrivateKeyStrategy, убедитесь, что он правильно выбирает псевдоним.

0
ответ дан dave_thompson_085 31 March 2019 в 14:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: