WebNotarius Specyfikacja techniczna komunikacji z usługą WebNotarius wersja 1.1
Spis treści 1. WSTĘP... 3 1.1 PRZEBIEG TRANSAKCJI W PROTOKOLE DVCS... 3 2. PROTOKÓŁ SOAP... 4 2.1 Poświadczenie ważności certyfikatu (VPKC)... 4 2.2 Poświadczenie ważności podpisu (VSD)... 5 3. DEDYKOWANE BIBLIOTEKI API... 7 4. DEDYKOWANE OPROGRAMOWANIE... 8 Specyfikacja Techniczna Wersja 1.1 2 / 8 2
1. Wstęp W celu połączenia się z usługą WebNotarius należy stworzyć żądanie wydania poświadczenia, zgodne z protokołem opisanym w RFC 3029 (Internet X.509 Public Key Infrastructure Data Validation and Certification Server Protocols). 1.1 Przebieg transakcji w protokole DVCS Transakcja protokołu DVCS jest rozpoczynana przez subskrybenta usługi WebNotarius. Subskrybent tworzy żądanie, które zawiera dane, dla których ma zostać wydane odpowiednie poświadczenie (poprawności podpisu dokumentu, ważności certyfikatu klucza publicznego). Podpisane przez subskrybenta żądanie przesyłane jest do serwera DVCS poprzez protokół transportowy http. Serwer DVCS, po otrzymaniu żądania, na podstawie podpisu żądania, dopuszcza (lub nie) subskrybenta do żądanej usługi. Jeżeli żądanie jest poprawnie zbudowane, serwer wykonuje, odpowiednie dla żądanego poświadczenia, operacje, których produktem jest poświadczeni e. Poświadczenie odsyłane jest do subskrybenta. Jeżeli żądanie jest niepoprawne, serwer DVCS odsyła do subskrybenta informacje o błędzie, który wystąpił. W obu przypadkach odpowiedź jest podpisywana przy wykorzystaniu struktur CMS SignedData. W chwili obecnej w celu połączenia się z usługą WebNotarius można skorzystać z Web Serwisu usługi poprzez protokół SOAP, wykorzystać biblioteki API bądź skorzystać z dedykowanego oprogramowania. W kolejnych punktach opisano poszczególne sposoby. Specyfikacja Techniczna Wersja 1.1 3 / 8 3
2. Protokół SOAP 2.1 Poświadczenie ważności certyfikatu (VPKC) 2.1.1 Wiadomość wejściowa <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://soap.dvcs.services.pki/"> <soapenv:header/> <soapenv:body> <soap:verifycertificate> <CertificateRequest> <certificate> <certificatevalue>certyfikat w Base64</certificateValue> </certificate> </CertificateRequest> </soap:verifycertificate> </soapenv:body> </soapenv:envelope> 2.1.2 Wiadomość wyjściowa <env:envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:header> <wsse:security>podpis złożony pod odpowiedzią</wsse:security> </env:header> <env:body> <soap:verifycertificateresponse xmlns:soap="http://soap.dvcs.services.pki/"> <Response> <certstatus> <issuer>string określający wystawcę certyfikatu </issuer> <serial>numer seryjny certyfikatu</serial> <status>otrzymany status certyfikatu</status> <statusinfo>otrzymana informacja na temat certyfikatu</statusinfo> <subject>string określający nazwę podmiotu certyfikatu</subject> Specyfikacja Techniczna Wersja 1.1 4 / 8 4
</certstatus> <response>odpowiedź serwera DVCS zakodowana w postaci Base64</response> <responsetime>czas odpowiedzi</responsetime> <serialnumber>numer odpowiedzi</serialnumber> seryjny <servicetype>validation of Public Key Certificates</serviceType> <status>status odpowiedzi</status> </Response> </soap:verifycertificateresponse> </env:body> </env:envelope> 2.2 Poświadczenie ważności podpisu (VSD) 2.2.1 Wiadomość wejściowa <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://soap.dvcs.services.pki/"> <soapenv:header/> <soapenv:body> <soap:verifysignature> <SignatureRequest> <message> <message>opcjonalne pole z wiadomością zakodowana w Base64 dla podpisów zewnętrznych</message> </message> <signature> <value>pole na podpis zakodowane w postaci Base64</value> </signature> </SignatureRequest> </soap:verifysignature> </soapenv:body> </soapenv:envelope> 2.2.2 Wiadomość wyjściowa <env:envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> Specyfikacja Techniczna Wersja 1.1 5 / 8 5
<env:header> <wsse:security>podpis złożony pod odpowiedzią</wsse:security> </env:header> <env:body> <soap: xmlns:soap="http://soap.dvcs.services.pki/"> <Response> <certstatus> verifysignaturerespons <issuer>string określający wystawcę certyfikatu podpisującego</issuer> <serial>numer seryjny certyfikatu</serial> <status>otrzymany status certyfikatu</status> <statusinfo>otrzymana informacja na temat certyfikatu</statusinfo> <subject>string określający na zwę certyfikatu</subject> </certstatus> podmiotu <response>odpowiedź serwera DVCS zakodowana w postaci Base64</response> <responsetime>czas odpowiedzi</responsetime> <serialnumber>numer seryjny odpowiedzi</serialnumber> <servicetype>validation of Dig itally Document</serviceType> <status>status odpowiedzi</status> </Response> </soap: verifysignaturerespons> </env:body> </env:envelope> Signed Specyfikacja Techniczna Wersja 1.1 6 / 8 6
3. Dedykowane biblioteki API Z usługą WebNotarius można połączyć się za pomocą dedykowanych bibliotek API napisanych w oparciu o wirtualna maszynę JAVA (jdk 1.3 wzwyż). Klasy obsługujące tworzenie żądań, wydania poświadczeń, wysyłanie żądań do usługi oraz interpretujące odpowiedzi serwera znajdują się w pakiecie pki.services.dvcs.structures.api. Należą do nich w szczególności VSDService i VPKCService, odpowiedzialne za obsługę usługi wydawania poświadczeń ważności podpisu i certyfikatu. Poniże j zaprezentowany jest przykład użycia klasy VSDService: VSDService service = new VSDService( "http://localhost:8080/dvcsserver", null, null); int res = service.executevsdservice(xml, null); } if (res == PKIStatus.PKISTATUS_GRANTED) { System.out.println("STATUS: POPRAWNY!"); } else if (res == PKIStatus.PKISTATUS_REJECTION) { System.out.println("STATUS: ODRZUCONY!"); ArrayList errors = service.geterrormessage(); for (Iterator iter = errors.iterator(); iter.hasnext();) { String element = (String) iter.next(); System.out.println(element); } } else if (res == VSDService.DVCS_ERROR_RESPONSE) { System.out.println("BŁĘDNE ŻĄDANIE!"); ArrayList errors = service.geterrormessage(); for (Iterator iter = errors.iterator(); iter.hasnext();) { String element = (String) iter.next(); System.out.println(element); } else { System.out.println("BŁĄD PODCZAS DZIAŁANIA SYSTEMU!"); ArrayList errors = service.geterrormessage(); for (Iterator iter = errors.iterator(); iter.hasnext();) { String element = (String) iter.next(); System.out.println(element); } } Specyfikacja Techniczna Wersja 1.1 7 / 8 7
4. Dedykowane oprogramowanie Z usługą WebNotarius można się połączyć za pomocą oprogramowania procertumdvcsclient. Oprogramowanie to jest aplikacją typu standalone i wymaga zainstalowania na komputerze użytkownika. Więcej informacji na temat usługi można uzyskać kontaktując się z CERTUM PCC za pośrednictwem formularza internetowego na stronie www.webnotarius.pl lub www.webnotarius.eu. Dodatkowo pod adresem www.webnotarius.pl oraz www.webnotarius.eu udostępniona jest aplikacja WWW (dostępna za pośrednictwem najpopularniejszych przeglądarek internetowych) umożliwiająca za pośrednictwem prostego i intuicyjnego interfejsu realizację weryfikacji za pośrednictwem usługi WebNotarius. Specyfikacja Techniczna Wersja 1.1 8 / 8 8