Импорт корневого центра сертификации в MS Office

#java #ms-word #apache-poi #ms-office #digital-signature

#java #ms-word #apache-poi #ms-office #цифровая подпись

Вопрос:

Я использую Apache POI и свой сертификат для цифровой подписи документа .docx:

 @Override
public byte[] sign(byte[] content, List<X509Certificate> certChain, PrivateKey privateKey) throws Exception {
    OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(content));

    SignatureConfig signatureConfig = new SignatureConfig();
    signatureConfig.setKey(privateKey);
    signatureConfig.setSigningCertificateChain(certChain);
    signatureConfig.setOpcPackage(pkg);

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    SignatureInfo si = new SignatureInfo();
    si.setSignatureConfig(signatureConfig);
    si.confirmSignature();
    pkg.save(outputStream);

    IOUtils.closeQuietly(pkg);
    return outputStream.toByteArray();
}
 

Цепочка сертификатов содержит мой сертификат и самозаверяющий сертификат (корневой центр сертификации), который используется для подписи моего сертификата (корневой центр сертификации является эмитентом моего сертификата). Этот код выполняется отлично и получает подписанный файл .docx. Но когда я открываю его с помощью Microsoft Word 2016, я получаю это сообщение:

Введите описание изображения здесь

Введите описание изображения здесь

Я также подписываю содержимое PDF с помощью Apache PDFBox, и когда я открываю подписанный PDF-файл с помощью Acrobat Reader, я получаю аналогичную проблему, но ее легко решить, добавив корневой ЦС в список доверенных сертификатов внутри Acrobat Reader. Но в Microsoft Office я не вижу ни одного подобного варианта. Как я могу заставить MS Office доверять корневому центру сертификации (или, по крайней мере, доверять моему сертификату)?

Комментарии:

1. Скорее всего, вам нужно добавить его в саму Windows.

2. К сожалению, я добавил корневой центр сертификации в хранилище доверия Windows, но никакой помощи. Но Acrobat Reader работает

Ответ №1:

После установки сертификата экспортируйте его в виде файла PFX. При экспорте есть возможность подключить корневой центр сертификации. Затем используйте файл PFX для подписи.

Отказ от ответственности: я не пробовал это с самозаверяющим корневым ЦС, поэтому я не знаю, примет ли это Office.

Комментарии:

1. Что вы подразумеваете под «после установки сертификата»? На что и как мне установить?

2. Шаги по установке зависят от того, какой тип сертификата вы создаете. Я больше всего знаком с сертификатами подписи кода, которые устанавливаются с помощью утилиты от Microsoft под названием pvkimprt.exe .