Можно ли реализовать электронную цифровую подпись на PHP?
Здравствуйте!
Есть задача давать пользователям скачивать с сайта подписанные с помощью ЭЦП файлы. Без применения сторонних криптографических пакетов а-ля Рутокен, а только силами сервера. Пользователи внешние, не в локальной сети.
1. Правильно ли я понимаю, что подписанный с помощью ЭЦП файл является зашифрованным и его нельзя открыть/использовать, не имея ключа?
2. Можно ли подписывать файлы только силами PHP (или задействуя через PHP какие-то ресурсы сервера)?
3. Если так можно, то как пользователь на своей стороне сможет расшифровать файл? Можно ли реализовать это на JavaScript, который будет работать в браузере клиента?
Спасибо.
эцп не шифрует подписываемые документы, она шифрует только их хэш.
ответ на вопросы о возможности подписывания пхп/жс зависит от того как/где хранятся ключи.
Подписание на стороне клиента и подписание на стороне сервера - это принципиально разные операции. В первом случае вы подписываете через cades плагин используя javascript, подпись выбирается из хранилища на стороне клиента. Во втором случае вы ставите на сервер КриптоПро, устанавливаете ключи и подписываете документы на сервере. Можете использовать КриптоПро SDK, можете использовать CryptoProBuilder. Для последнего не нужно устаналивать расширение в PHP, т.к. он работает через консоль.
Вот статья, здесь указано как устанавливается и какой функционал доступен: https://habr.com/ru/articles/924478/