Jak podpisać dokument KSeF — XMLDSig i certyfikat kwalifikowany
Jak podpisać dokument XML w KSeF? Podpis XMLDSig, XAdES, certyfikat kwalifikowany — praktyczny przewodnik dla programistów integrujących z KSeF.
Jak podpisać dokument KSeF?
Podpis elektroniczny w KSeF jest wymagany przy autoryzacji certyfikatem i w niektórych operacjach zarządzania. Poniżej praktyczny przewodnik.
Kiedy potrzebny jest podpis w KSeF?
InitSigned — otwarcie sesji interaktywnej za pomocą certyfikatu kwalifikowanego wymaga podpisania challenge.
Zarządzanie uprawnieniami — niektóre operacje administracyjne wymagają podpisu.
Uwaga: Do zwykłej wysyłki faktur przez sesję tokenową (InitToken) podpis dokumentu faktury nie jest wymagany — wystarczy token.
Format podpisu
KSeF akceptuje:
Workflow autoryzacji certyfikatem
- Zwraca losowy ciąg danych do podpisania
- Wyślij zaszyfrowane i podpisane dane
Podpis w Java
// Załaduj certyfikat z KeyStore
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(new FileInputStream("certyfikat.p12"), haslo.toCharArray());
// Pobierz klucz prywatny
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, haslo.toCharArray());
X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);
// Inicjalizuj XMLSignature
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
// ... konfiguracja i podpisaniePodpis w .NET
// Załaduj certyfikat
X509Certificate2 cert = new X509Certificate2("certyfikat.pfx", haslo);
// Podpisz XML
SignedXml signedXml = new SignedXml(xmlDocument);
signedXml.SigningKey = cert.GetRSAPrivateKey();
// ... konfiguracja i podpisanieTypowe błędy przy podpisywaniu
Certyfikaty w chmurze (SimplySign)
Certyfikaty chmurowe wymagają użycia API dostawcy do podpisywania. Nie możesz ich używać jak lokalnych plików .p12 — musisz wywołać API SignCloud lub podobne.
Uproszczenie: korzystaj z tokenów
Jeśli możesz, unikaj autoryzacji certyfikatem w automatycznych systemach. Wygeneruj token raz (za pomocą certyfikatu), a potem używaj tokena do otwierania sesji bez potrzeby podpisywania.
Potrzebujesz pomocy?
Nasze [proxy KSeF](/proxy-ksef) obsługuje podpisywanie po swojej stronie. [Skontaktuj się z nami](/kontakt) jeśli masz problemy z implementacją podpisu.