SSL - это механизм защиты транспорта, он не применим.
Вы можете использовать OpenPGP или PKI (сертификаты X.509 и формат CMS). Эти технологии позволяют подписывать данные дважды или более, не делая недействительными предыдущие подписи - это делается с помощью отдельных подписей.
Выбор того, что (PGP или PKI) использовать, принадлежит вам - эти технологии могут использоваться в аналогичных сценариях, но имеют разные способы аутентификации ключей: в PGP пользовательские ключи подписываются другими пользователями, а в PKI подписываются сертификаты центрами сертификации, которые должны иметь больше доверия.
Когда вы «подписываете документ» с помощью криптографической подписи, с технической точки зрения это хеш документа, который подписан. Хеш можно рассчитать на сервере и отправить клиенту для подписи, затем отсоединенная подпись передается обратно на сервер. Таким образом, вы можете хранить документ на сервере, а закрытые ключи, используемые для подписи, не покидают клиента.
Однако для реального подписания на клиенте вам понадобится какой-то модуль, который будет взаимодействовать с сервером и выполнять работу. Вы не можете использовать только веб-браузер - требуется некоторый плагин для браузера. Причина в том, что «криптография» Javascript, даже если она технически разрешает доступ к ключам на стороне клиента, хранящимся в файлах или на криптографических устройствах, имеет определенные концептуальные недостатки, которые делают ее практически бесполезной. Таким образом, в конечном итоге вы используете что-то более надежное и безопасное, то есть подписанный апплет, элемент управления ActiveX или сценарий Flash.
Наша компания предоставляет различные компоненты безопасности, среди которых есть компоненты и модули для распределенной подписи (включая вышеупомянутые плагины). Эти модули предназначены для операций PKI (хотя в целом у нас также есть компоненты для операций OpenPGP, в настоящее время эти компоненты не поддерживают распределенную подпись).
И я должен отметить, что «автоматизация» здесь возможна, когда пользователь выбирает сертификат для использования и нажимает кнопку «подписать» (например). Вы не можете ничего подписать без явного действия пользователя. В некоторых случаях пользователю также необходимо будет предоставить ПИН-код / пароль, который защищает закрытый ключ от неправильного использования.