Подписание файлов в веб
(0 чел.) 
  • Страница:
  • 1
  • ...
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ТЕМА: Подписание файлов в веб

Re: Подписание файлов в веб 2 года, 5 мес. назад #2966

  • Developer.KZ
  • Осваиваюсь на форуме
  • Постов: 31
  • Репутация: 0
чистая

Re: Подписание файлов в веб 2 года, 5 мес. назад #2968

  • Developer.KZ
  • Осваиваюсь на форуме
  • Постов: 31
  • Репутация: 0
установил, то же самое, скажите, кроме Java, Xterm какие ещё зависимости?

Re: Подписание файлов в веб 2 года, 5 мес. назад #2972

  • ugotbug
  • Завсегдатай
  • Постов: 225
  • Репутация: 14
REQUIREMENTS: java (Oracle JRE), coreutils, zenity, xterm, pcsc (for haradwre tokens), xdg-utils, vim-common

Если у вас совсем проблемы запустите скрипт с опцией --run
Могущественный обладатель кольца Знаний

Re: Подписание файлов в веб 2 года, 5 мес. назад #2994

  • Developer.KZ
  • Осваиваюсь на форуме
  • Постов: 31
  • Репутация: 0
Добрый день, коллеги, возвращаясь к реализации подписи и проверки ЭЦП на сервере, я могу делать так?
0. При заключении договора нам присылают открытые ключи клиенты.
1. Пользователь входит сначала в лич кабинет через выданный нами логин пароль и подтверждает что он не робот (Google Captcha)
2. на странице PHP заполняет данные формы (POST) поля сообщения текст
3. Далее ниже кнопка обзора, пользователь выбирает файл-контейне PCSC12 (RSA256_bba3ff3629edcbc6b187a69d850dfeefeed64621.p12) и вводит пароль
3. На серверной части выполняется следующий код для выполнения подписи и проверки валидности подписи текста формы которую он заполнил и отправил нам (сохраняем в БД открытый ключ и подпись (для разборок))

Вопрос, такой вариант легален?

<?php
$keyfile = '/tmp/key/RSA256_bba3ff3629edcbc6b187a69d850dfeefeed64621.p12';

$filename = $keyfile;
$password = '123456';
$results = array();
$worked = openssl_pkcs12_read(file_get_contents($filename), $results, $password);

if ($worked) {
//echo '<pre>', print_r($results, true), '</pre>';
echo '</br>'.'<b>Сертификат: </b></br>'.$results['cert'].'</br>';
echo '</br>'.'<b>Закрытый ключ: </b></br>'.$results['pkey'].'</br>';
} else {
echo openssl_error_string();
}
$cert = $results['cert'];
//$pubkey = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");
$signature = '';
$data = 'Hi, how are you?';
$pkey = $results['pkey'];
echo '</br>'.'<b>Данные для подписи: </b></br>'.$data.'</br>';
$pkeyid = openssl_pkey_get_private($results['pkey']);
$worked = openssl_sign($data, $binary_signature, $pkey, "sha"); //"SHA256WITHRSA"
$sig = base64_encode($binary_signature);
echo '</br>'.'<b>Подпись: </b></br>'.$sig.'</br>';
$pubkey = openssl_pkey_get_public($cert);
$ok = openssl_verify($data, $binary_signature, $pubkey, "sha");

echo "check #1: ";
if ($ok == 1) {
echo "signature ok (as it should be)\n";
} elseif ($ok == 0) {
echo "bad (there's something wrong)\n";
} else {
echo "ugly, error checking signature\n";
}

?>

Re: Подписание файлов в веб 2 года, 5 мес. назад #2995

  • Developer.KZ
  • Осваиваюсь на форуме
  • Постов: 31
  • Репутация: 0
Результат:

Сертификат:
-----BEGIN CERTIFICATE----- MIIG0jCCBLqgAwIBAgIUVxDcFWzxjFWg3kr3jKq3E3w85UUwDQYJKoZIhvcNAQEL BQAwgc4xCzAJBgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNV BAgMDNCQ0KHQotCQ0J3QkDFMMEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa 0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb0KvSmiDSmtCr0JfQnNCV0KLCuzFD MEEGA1UEAww60rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU0KvQoNCj0KjQqyDQ ntCg0KLQkNCb0KvSmiAoUlNBKTAeFw0xNTEyMjIwOTI1NDRaFw0xNjEyMjEwOTI1 NDRaMIGnMR4wHAYDVQQDDBXQotCV0KHQotCe0JIg0KLQldCh0KIxFTATBgNVBAQM DNCi0JXQodCi0J7QkjEYMBYGA1UEBRMPSUlOMTIzNDU2Nzg5MDExMQswCQYDVQQG EwJLWjEVMBMGA1UEBwwM0JDQodCi0JDQndCQMRUwEwYDVQQIDAzQkNCh0KLQkNCd 0JAxGTAXBgNVBCoMENCi0JXQodCi0J7QktCY0KcwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCB/AphxmPSaMlZu28Gk7VDT66yJETldCJvr3R0Y3EwnIv/ XUd/iZ7t588E5yaKdbr8MXMeffyuGmQVI6hcguk9CgZx7xuFFNHnn34rS4Goreca tQfpXo6WBEU8m0Playy2WULk2gF9M+IcBI4y/YWkdwa6en5D8G9VUR1EyhKTLN9j aK2jzUi1sO7OUsyPHcJnUm0QrKQFzys+4B8vRmAWr7CiBIkdlvl3t2UoxADdhn2a 7qw3C8VE8ddcqF+v5HIXfWfhV0Lt1492PkbVGKhfOWFbcnOJk+uBcW7gL/CB3zQB kx310GpYzQmGN/+3nRv6Y2xtyOD3Gcw8symB1YJPAgMBAAGjggHLMIIBxzAOBgNV HQ8BAf8EBAMCBsAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCqDDgMDBAEBMA8GA1Ud IwQIMAaABFW1tOIwHQYDVR0OBBYEFLuj/zYp7cvGsYemnYUN/u/u1kYhMF4GA1Ud IARXMFUwUwYHKoMOAwMCAzBIMCEGCCsGAQUFBwIBFhVodHRwOi8vcGtpLmdvdi5r ei9jcHMwIwYIKwYBBQUHAgIwFwwVaHR0cDovL3BraS5nb3Yua3ovY3BzME4GA1Ud HwRHMEUwQ6BBoD+GHWh0dHA6Ly9jcmwucGtpLmdvdi5rei9yc2EuY3Jshh5odHRw Oi8vY3JsMS5wa2kuZ292Lmt6L3JzYS5jcmwwUgYDVR0uBEswSTBHoEWgQ4YfaHR0 cDovL2NybC5wa2kuZ292Lmt6L2RfcnNhLmNybIYgaHR0cDovL2NybDEucGtpLmdv di5rei9kX3JzYS5jcmwwYgYIKwYBBQUHAQEEVjBUMC4GCCsGAQUFBzAChiJodHRw Oi8vcGtpLmdvdi5rei9jZXJ0L3BraV9yc2EuY2VyMCIGCCsGAQUFBzABhhZodHRw Oi8vb2NzcC5wa2kuZ292Lmt6MA0GCSqGSIb3DQEBCwUAA4ICAQDlVIykcpb/hrNE Zsy0r08jLZ+SoXjlhBmaoC+QF+biTnKJc7AjCk0FOBmPHEHh4PY1/+VZxNW4GGr/ COBzxuTLNkqXieT7tgcvMj24Kq8r8Mwd+sn6vByPWJbMG+CNBiy3CdFj5jZ8PYH/ 5dpSyvoOOrweqc6yli1xVrxDJyPEyVoV0oRWAZtOnmNDAFCknkEnVNjgzFgqxYTw wlrtD506MJbnjP9dTErB+116R6X1K20ajmxGwbsAdaQauhlF2OLHAuxUYSA/LbcQ OJiJx+TRIKmToF269wAjCkE+9Qf3qxI46QMz69o+av8eXM+uH2edzjwjDIvRd4/P zQiiO7O51QXxISdtDG3uoLphacJ7vR9j+BE/ihz5nUrimK+7RP0WtSh3LS4hQ1XN BbC9COuqQ9u1jctAElDBq/CLqSIzROJ1oUBnsnBL1veb+hCrkp5L5ow8tk9jA1Kd KPVbXO7RFuMEZT1LiVXZ1xd+1jjVho9yDJYtSPVvYmjfBgqsuqvn3fjpmUC3/xn/ wr3WdFdz5R5JXWT2ljZ4b95Vl7ZR6x5bJuqkAKvit0EiJ1pUPanbstHisRIffV7J kSPooxcG9g9F/JqyaHtfbI4i7vc96OxTwW3luA15dX/NNZbkD2pMvFi3SdJAibws /4TVz+MgDvX3wxnZ92qGl7FBJ1fIRg== -----END CERTIFICATE-----

Закрытый ключ:
-----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCB/AphxmPSaMlZ u28Gk7VDT66yJETldCJvr3R0Y3EwnIv/XUd/iZ7t588E5yaKdbr8MXMeffyuGmQV I6hcguk9CgZx7xuFFNHnn34rS4GorecatQfpXo6WBEU8m0Playy2WULk2gF9M+Ic BI4y/YWkdwa6en5D8G9VUR1EyhKTLN9jaK2jzUi1sO7OUsyPHcJnUm0QrKQFzys+ 4B8vRmAWr7CiBIkdlvl3t2UoxADdhn2a7qw3C8VE8ddcqF+v5HIXfWfhV0Lt1492 PkbVGKhfOWFbcnOJk+uBcW7gL/CB3zQBkx310GpYzQmGN/+3nRv6Y2xtyOD3Gcw8 symB1YJPAgMBAAECggEAI5HjDWqKunNuVh3SfgxBmA/gEGOYbune2o064varbNAK B3FxNVdlpFjA7+iJRW5+IrEtfXSghsw2Awrk8ZvpU4jAxsDV2Q8febDNh+97pbsg +M/9QEFd53N3tuQOKmOvsp6ujY2Sxr5B68TbXNy/i4f+0Vzf3JuY+9HcnoxllNxV +4Pq3qdQ6dHZKtDXXOxZJmeHRsblwvnxTyTbUHquhqPgEvn70SbOtISJoITW6oTM Ch6riv3sJPAxZc5iKPmI1A969IN0S5Drci4SDvBnzEI4YwBV6bdpUVjRObuAkgQ3 kMymP/YkGlWfuaoLF75cYPKsYgIrKnxrJXa7GtaeEQKBgQDnlMdhSn5EujQtglCq e+cjSVD8QOe0PgwlZ4Fc7oGcElZzhiYHyMCaxcZPK0EgXkNtvLQXshwSR0ENVslf +7debWqEHG0hmLEesBAbbIJ7yAGSj24yIboT9VuJqS4wqo8L39GjoLdDK/RDwjBn e/8mlMsaIL6uf/JjpNbPuVYfqwKBgQCPsMwzuzrAed0JhEdOGeXiMmiX3MkC8Eb5 CShPH7Vy8nian6auKnYpUV7w3IB1VTaT+ve5ESYRrRdybynTmsWPfNj6RBhW9jxL cdpnLQ4ZOZOc0Yt6yeX16aOa5MZkNIsWj0RjoIxKbTNNCqnbaXmHNQSW3b9aZXWc IEUsy8GT7QKBgCmWPSvKjdxXt/EIOuYys/JRQzrZiQKENfgtmzyOFDZr0JyUVZYG RhhFNfSXpu1iICe/wHOU55ectiDoGeejs21ApuUsmahz3DLPmUTjepcx9p5UJYzZ I6pb4GFbQVE5/9A5FFOXE/H7HbVhVQHwcYSDKen6QWPi1CtyuaS5+q5bAoGABInb CU9Cnc27k49gCTF8N1bMQu+wUa1xMHB/m3Au9QB/mrKsOxgQP2HYk9cDH7GfVbE5 ndjS0QAcm3qzYYGj99JDsDPyaNzCLsfb1CJyLY3KAcwEkc5Kuye0CTJsqcGXGxFP Ya4ygC9OzYImt01vjzu3d2RtpNdLjbDfPnj5FkkCgYBlZ1mfXN2r7zMvangqXBnv y8WAHXnz4EwrSvXbwwLyMTx4ioKom5Olj0lLP7S6Kd5OMFdo8YEyQp8SNrXg3nH/ azW7tEeVut7bzfIh8NmaS3oJejqmxjkzYTwsm4SgLtCrmbSR5EM+plF1YV2Dr8mv UH/PTMmBbG3INamUevjeSw== -----END PRIVATE KEY-----

Данные для подписи:
Hi, how are you?

Подпись:
c5jD6iSw6B6opglqBHXlPhaZR2y2nWZDgROJ/vbatoys0zgvlDaGByLhTwWG8+xdla/h6V0+tPWwtD2T8ioPjBb6B6WNAqjk/VTQRvDjJr4KwSqUZQR/ZeAHZt88LldGaJQKpBurAnX6nAr5fsW5KB/QcC+HZHgcGf9deZbYES/BavXV1U4fL9n43OCRzUsUdBlwcQRcu9vNm3ZUnD+qF5pFQpIdXaYwvnKBoKJAPuqV/KIrtYDAcbPc/cy33L78ES16O21Pl/EdYJZc0pWOnc0/06bM3+kAtYa5QMGh3NjGhD3Zp3pBnGd5zBIrWFd+ejuE/W2oVA8YzpfArZR+UA==

check #1: signature ok (as it should be)

Re: Подписание файлов в веб 2 года, 5 мес. назад #2996

  • valexweb
  • Новый участник
  • Постов: 9
  • Репутация: 0
Меня смущает следующее. На серверной части выполняется следующий код для выполнения подписи
Этот пункт должен выполняться на клиенте, перед отправкой на сервер, по идее закрытый ключ вообще не должен передаваться на сервер, а вот проверки уже можно делать на сервере.
  • Страница:
  • 1
  • ...
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
FaLang translation system by Faboba