Java за цифрово подписване на документи в уеб


Уеб приложение за верификация на цифровия подпис и сертификата на изпращача



страница12/14
Дата14.08.2018
Размер2.83 Mb.
#78668
1   ...   6   7   8   9   10   11   12   13   14

3.4.Уеб приложение за верификация на цифровия подпис и сертификата на изпращача


Като част от системата за подписване на файлове NakovDocumentSigner е разработено и примерно Java-базирано уеб приложение, което дава въз­можност на потребителя да подписва и изпраща файлове, след което проверява цифровия подпис и сертификата на изпращача. Реализирана е проверка на цифровия подпис на получения файл, директна проверка на получения сертификат и проверка на получената сертифика­ционна верига за случаите, в които такава е налична.

Проверката на цифровия подпис установява дали изпратената сигнатура съответства на изпратения файл и изпратения сертификат.

Директната проверка на серти­фиката установява дали на този сертификат може да се има директно доверие, без да се проверява сертифика­ционната му верига.

Проверката на сертификационната верига на сертификата на изпращача (когато е налична) има за цел да провери валидността на сертификата и да потвърди самоличността на изпращача.


Как се извършват проверките на подписа и сертификата?


Проверката на сигнатурата се извършва по стандартния начин с използва­не на класа java.security.Signature
. За целта първо се извлича пуб­личният ключ на потребителя от получения сертификат и след това с него се проверява дали получената сигнатура съответства на получения файл.

За директната проверка на сертификат примерното уеб приложение под­държа множество от сертификати, на които има доверие и проверява дали сертификатът на потребителя е директно подписан от някой от тях. Про­верява се и срокът на валидност на сертификата. Доверените сертификати за директна проверка се съхраняват като .CER файлове в специална директория на приложе­нието, името на която се указва от константа.

За проверката на сертификационната верига на получения потребителски сертификат в демонстрационното уеб приложение се използва множество от дове­рени Root-сертификати на сертификационни органи от първо ниво. От това множест­во се построява съвкупността от крайни точки на доверие (trust anchors), която е необходима за проверката на сертификационната верига. Самата проверка на веригата сертификати се извършва по PKIX алго­ритъма, който е реализиран в Java Certification Path API. Доверените Root-сертификати се съхраняват като .CER файлове в специална директо­рия на приложението, името на която се указва от константа.

Уеб приложението е базирано на J2EE и Struts


Демонстрационното уеб приложение е базирано на Java технологиите и е реализирано със средствата на платформата J2EE (Java 2 Enterprise Edition) и широкоразпространения framework за Java уеб приложе­ния Struts. В основната си част използва Servlet/JSP технологиите за реализация на потребителския си интерфейс и следва J2EE стандарта за Java уеб прило­жения. За изпълнението си изисква J2EE уеб контейнер, в който да работи.

Struts framework е използван, защото има вградена функционалност за посрещане на файлове, изпратени от HTML форма, докато такава възмож­ност стандартно в JSP/Servlets технологията няма.

Приложението се състои две Struts-базирани HTML форми, Struts action клас за обработка на формите, Struts action form клас за съхранение на данните от формата, клас за проверка на цифрови подписи и сертификати, страница за обработка на изпратения подписан файл и няколко конфигу­рационни файла.

Заради програмния модел на Struts framework приложението стриктно следва архитектурата Model-View-Controller (MVC), макар и това да не е наложително за нашите цели.

Пълният сорс код на системата е достъпен за свободно изтегляне от сайта на NakovDocumentSigner – http://www.nakov.com/documents-signing/.

Уеб форма за подписване със сертификат от PFX файл


Формата за подписване на файл със сертификат от PKCS#12 хранилище (PFX файл) се състои от три полета, съответно за името на файла, сертификата и сигнатурата и съдържа още аплета за подписване и бутон за изпращане на формата:



Фигура 4 23. Уеб форма за подписване със сертификат от PKCS#12 хранилище

На картинката (фигура 4-6) аплетът за подписване изглежда като бутон със заглавие “Sign selected file”. Тази форма се поражда от JSP страница, базирана на библиотеката от тагове “struts-html” и използва Struts тага за изпращане на файл :



SignedFileUploadForm-PFX.jsp

<%

/**

* A JSP that contains the form for signing and uploading a file. The form

* contains 3 fields - the file to be uploaded, the certification chain and

* the digital signature. It also contains the DigitalSignerApplet that signs

* the selected file on the client's machine.

*

* This file is part of NakovDocumentSigner digital document

* signing framework for Java-based Web applications:

* http://www.nakov.com/documents-signing/

*

* Copyright (c) 2003 by Svetlin Nakov - http://www.nakov.com

* National Academy for Software Development - http://academy.devbg.org

* All rights reserved. This code is freeware. It can be used

* for any purpose as long as this copyright statement is not

* removed or modified.

*/

%>

<%@ taglib uri="/WEB-INF/taglibs/struts-html.tld" prefix="html" %>

<html>

<body>

<html:form type="demo.SignedFileUploadActionForm" action="/SignedFileUpload"

method="post" enctype="multipart/form-data">

Please choose file to sign and upload: <html:file property="uploadFile"/> <br>

Certification chain (Base64-encoded): <html:text property="certChain"/> <br>

Digital signature (Base64-encoded): <html:text property="signature"/> <br>

<br>

<object

classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"

codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"

width="130" height="25" name="DigitalSignerApplet">

<param name="type" value="application/x-java-applet;version=1.4">

<param name="code" value="DigitalSignerApplet">

<param name="archive" value="DigitalSignerApplet.jar">

<param name="mayscript" value="true">

<param name="scriptable" value="true">

<param name="fileNameField" value="uploadFile">

<param name="certificationChainField" value="certChain">

<param name="signatureField" value="signature">

<param name="signButtonCaption" value="Sign selected file">

<comment>

<embed

type="application/x-java-applet;version=1.4"

pluginspage="http://java.sun.com/products/plugin/index.html#download"

code="DigitalSignerApplet"

archive="DigitalSignerApplet.jar"

width="130"

height="25"

mayscript="true"

scriptable="true"

fileNameField="uploadFile"

certificationChainField="certChain"

signatureField="signature"

signButtonCaption="Sign selected file">

<noembed>

Document signing applet can not be started because

Java Plug-In version 1.4 or later is not installed.

noembed>

embed>

comment>

object>

<br>

<br>

<html:submit property="submit" value="Upload file"/>

html:form>

body>

html>

При преноса на данните от формата към сървъра се използва кодиране “multipart/form-data”, което позволява изпращане на файлове и друга обемиста информация. Аплетът за подписване се вгражда с таговете и . Всъщност тагът се разпознава само от Internet Explorer, а от всички останали браузъри и за да работи нашето приложение на всички браузъри, двата тага се комбинират.

Каталог: books -> signatures
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване
signatures -> Java за цифрово подписване на документи в уеб


Сподели с приятели:
1   ...   6   7   8   9   10   11   12   13   14




©obuch.info 2024
отнасят до администрацията

    Начална страница