DIA00159 Сага о цифровых сертификатах Современный мир полон мошенников, а значит и различных средств защиты от них. Теперь я тоже умею подписывать приложения цифровыми сертификатами и есть возможность использовать цифровой сертификат СФУ. Для примера подписал нашу программу CellBook, которую кстати предлагаю развивать и дополнять дальше. Как я к этому шел? Неототорые технические подробности. В октябре мне пришлось приобретать сертификат для подписывания Java приложений для СФУ, так как проигрыватель тестов для школьных олимпиад сделан на базе этой технологии. Сертификат у Thawte мы покупали через фирму МаксСофт, которые в свою очередь покупали его через Ру-центр. Удовольствие такое стоит сейчас с учетом подорожания доллара 10т.р. в год, поэтому из своего кармана покупать такой сертификат достаточно накладно. С помощью утилиты keytool мне удалось создать хранилище и сформировать csr (Certificate Signing Request), которая была переправлена в Thawte. Затем они почти неделю подтверждали, что мы действительно СФУ. Не буду вдаваться в подробности, но в итоге я получил три сертификата. Корневой система уже знает. Промежуточный импортируем командой: keytool -import -trustcacerts -alias intermed -file intermed.crt -keystore keystore.jks
Сертификат СФУ импортирую такой командой: keytool -import -trustcacerts -alias sfu -file sfu.crt -keystore sfu.jks
jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore /usr/java/jre1.8.0_25/bin/keystore.jks -strict -storepass MYPASSWORD myapp.jar sfu
Теперь возникает разумное желание подписать наши приложения этим сертификатом! Во первых, мы все-таки в СФУ и вполне можем от имени СФУ публиковать свои приложения для люминометров и различные научные модели. Вот вторых сертификат стоит немалых денег и как-то хочется его использовать рационально. Но вот вопрос, как-же использовать его для подписи приложений Windows. Ведь для них нужно было по-другому заказывать эти сертификаты... Используется так называемый персональный ключ PVK. Сегодня я нашел как экспортировать pvk из хранилища ключей Java! keytool -importkeystore -srckeystore keystore.jks -destkeystore privatekey.p12 -deststoretype PKCS12
Важно, что эта команда работает только в Java начиная с версии 8. теперь его надо конвертировать из этого формата P12 openssl pkcs12 -in privatekey.p12 -nocerts -nodes -out mykey.pem
Для преобразования файла из формата PEM воспользуемся программкой, которую заботливо подготовил Dr Stephen N Henson: http://www.drh-consultancy.demon.co.uk/pvktool.zip Эта программа работает только в винде, запускаем из командной строки: pvk.exe -in mykey.pem -topvk -strong -out mykey.pvk
Так мы получили заветный pvk (private key). Теперь исходный сертификат от Thawte нам нужно преобразовать в формат spc. cert2spc Siberian_federal_university_2015_10_29.crt SFU.spc
Теперь получаем итоговый файл для подписи приложений: pvk2pfx.exe -pvk mykey.pvk -spc SFU.spc -pfx SFU.pfx -po NEWPASSWORD
А сама подпись осуществляется такой командой: signtool.exe sign /f SFU.pfx /p NEWPASSWORD /t http://timestamp.comodoca.com/authenticode /v 527_cellbook-0.1.0.1-setup.exe
http://www.dbase.com/Knowledgebase/faq/CodeSigningHowTo.asp http://stackoverflow.com/questions/4217107/how-to-convert-pfx-file-to-keystore-with-private-key http://stackoverflow.com/questions/6654543/how-to-create-pfx-with-my-chain-of-certificates Ivan Denisov 05 Mar 2015 03:43
© International Open Laboratory for Advanced Science and Technology — MOLPIT, 2009–2025
|