1

Я боролся с этим в течение двух дней.Digitally Sign Document с PHP

Я уже создал аутентификацию с сертификатом клиента, и теперь я хочу использовать тот же сертификат для подписи документов.

То, что я пытался до сих пор:

  • Получить открытый ключ с помощью openssl_pkey_get_public($_SERVER["SSL_CLIENT_CERT"]), и он работал отлично.
  • Получить секретный ключ, используя openssl_pkey_get_private($_SERVER["SSL_CLIENT_CERT"], "mypwd"), но он не работает, и я не знаю почему.

После этого я планирую подписывать pdf-файл с помощью этого закрытого ключа, используя openssl_sign().

Впервые я пытаюсь создать такие вещи, кто-нибудь знает, что я делаю неправильно?

Мой конф:

Apache/2.4.12 (Win32) OpenSSL/1.0.1l PHP/5.6.8

ответ

1

Вы не можете использовать закрытый ключ сертификата клиента, потому что закрытый ключ хранится на клиенте и он не передается серверу. Клиент никогда не дает вам свой ключ. Передача личного ключа клиента по сети = ОТКАЗ. На сервере доступна только открытая часть сертификата.

Единственный вариант - выполнить операции подписи на стороне клиента (через ActiveX или что-то подобное, которое может взаимодействовать с хранилищем сертификатов клиента). Скажем, пусть клиент загружает документ, подписывает его там (в браузере) и загружает его или что-то еще.

+0

Наконец-то немного света, большое спасибо, я, вероятно, сделаю это. –