Как реализовать эл. подпись документов на сайте?
Модулей нормальных нет. Есть якобы электронный документооборот от КриптоАРМ, но мне не удалось его заставить нормально работать, плюс лишняя прослойка добавляется поверх КриптоПро. И если КриптоПро стоит у всех кто пользуется ЭЦП, то КриптоАРМ так не распространен и придется клиентам его ставить.

Своими силами реализуется с помощью КриптоПро ЭЦП Browser Plugin, там есть js библиотека cades для взаимодействия с КриптоПро и подписания документов и т.д. Но проблема в том что подписать это пол дела, на сервере надо проверять подпись и верифицировать ее, иначе легко можно подписать не своей подписью или не квалифицированной (квалифицированная = юридически значимая). Для этого нужно на сервер устанавливать КриптоПро SDK и патчить php 7 чтобы добавить в php библиотеку cades, которая как раз и позволит работать с ЭЦП на сервере, проверки подписей и т.д. и т.п. 
Все это есть в документации к КриптоПро тут https://docs.cryptopro.ru/cades/
SDK должен выдать центр, удостоверяющий эти самые ЭЦП. А вместе с ним и инструкции по подключению.