KSeF API certyfikat RSA vs EC – różnice i wymagania

KSeF API 2.0 wspiera zarówno certyfikaty RSA, jak i EC (krzywe eliptyczne). Zrozumienie różnic i wymagań jest kluczowe dla prawidłowej implementacji podpisów elektronicznych.

RSA vs EC w KSeF API

KSeF API 2.0 akceptuje certyfikaty RSA (2048 bitów) oraz certyfikaty EC (krzywe eliptyczne, secp256r1). Oba typy certyfikatów mogą być używane do podpisywania dokumentów AuthTokenRequest.

Certyfikaty EC są zalecane przez Ministerstwo Finansów ze względu na lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy. Jednak implementacja podpisów EC może wymagać dodatkowej konfiguracji w niektórych bibliotekach.

Certyfikaty RSA są szerzej wspierane przez biblioteki kryptograficzne i mogą być łatwiejsze w implementacji, szczególnie dla początkujących integratorów.

Instrukcja krok po kroku

1. Wybierz typ certyfikatu

Zdecyduj, czy użyjesz certyfikatu RSA (2048 bitów) czy EC (secp256r1). Certyfikaty EC są zalecane, ale RSA może być łatwiejsze w implementacji z niektórymi bibliotekami.

2. Wygeneruj certyfikat zgodnie z wymaganiami

Dla RSA: długość klucza 2048 bitów, OID 1.2.840.113549.1.1.1. Dla EC: krzywa secp256r1 (NIST P-256), OID 1.2.840.10045.2.1. Certyfikat musi zawierać rozszerzenia keyUsage (digitalSignature, nonRepudiation) oraz organizationIdentifier z NIP.

3. Skonfiguruj bibliotekę podpisującą

Dla RSA użyj algorytmu rsa-sha256 lub sha256WithRSAEncryption. Dla EC użyj algorytmu ECDSA z SHA-256. Niektóre biblioteki (np. BouncyCastle) wymagają dodatkowej konfiguracji dla certyfikatów EC.

4. Przetestuj podpis

Przetestuj podpis w środowisku testowym KSeF. Certyfikaty EC mogą wymagać dodatkowej konfiguracji w niektórych bibliotekach, więc warto przetestować oba warianty.

Najczęstsze problemy i rozwiązania

Certyfikat EC zwraca błąd 'Nieprawidłowa treść podpisu'

Upewnij się, że używasz krzywej secp256r1 (prime256v1 w OpenSSL) i algorytmu ECDSA z SHA-256. Niektóre biblioteki (np. BouncyCastle, OpenSSL w PHP) wymagają dodatkowej konfiguracji dla certyfikatów EC. Sprawdź dokumentację biblioteki dotyczącą podpisywania z certyfikatami EC.

RSA działa, ale EC nie

To częsty problem wynikający z nieprawidłowej konfiguracji biblioteki dla certyfikatów EC. Sprawdź, czy biblioteka poprawnie obsługuje ECDSA. W niektórych przypadkach może być konieczne użycie innego providera kryptograficznego lub dodatkowej konfiguracji algorytmów.

Który typ certyfikatu wybrać?

Certyfikaty EC są zalecane przez MF ze względu na lepszą wydajność i bezpieczeństwo. Jednak jeśli masz problemy z implementacją EC lub używasz biblioteki, która lepiej wspiera RSA, możesz użyć certyfikatów RSA 2048 bitów. Oba typy są akceptowane przez KSeF.

Różnice w algorytmach podpisu

Dla RSA użyj algorytmu http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 lub sha256WithRSAEncryption. Dla EC wymagany jest algorytm ECDSA z SHA-256. Upewnij się, że biblioteka używa właściwego algorytmu dla wybranego typu certyfikatu.

Wymagania dla certyfikatów RSA

Certyfikaty RSA w KSeF muszą mieć długość klucza równą 2048 bitów (OID: 1.2.840.113549.1.1.1). Algorytm podpisu to RSA-SHA256 (http://www.w3.org/2001/04/xmldsig-more#rsa-sha256). Certyfikat musi zawierać rozszerzenia keyUsage (digitalSignature, nonRepudiation, keyEncipherment) oraz extendedKeyUsage (clientAuth).

Wymagania dla certyfikatów EC

Certyfikaty EC w KSeF muszą używać krzywej secp256r1 (NIST P-256, prime256v1 w OpenSSL, OID: 1.2.840.10045.2.1). Algorytm podpisu to ECDSA z SHA-256. Certyfikat musi zawierać te same rozszerzenia co RSA. Certyfikaty EC są zalecane przez Ministerstwo Finansów.

Porównanie RSA i EC

Certyfikaty EC oferują lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy (256 bitów EC odpowiada 3072 bitom RSA). Jednak implementacja EC może być bardziej skomplikowana w niektórych bibliotekach. RSA jest szerzej wspierane i może być łatwiejsze w implementacji. Oba typy są akceptowane przez KSeF.

Problemy z implementacją EC

Niektóre biblioteki (BouncyCastle, OpenSSL w PHP, niektóre wersje node-forge) mogą wymagać dodatkowej konfiguracji dla certyfikatów EC. Problemy mogą wynikać z nieprawidłowego użycia algorytmów, providerów kryptograficznych lub konfiguracji krzywych eliptycznych. W razie problemów rozważ użycie certyfikatów RSA lub sprawdź dokumentację biblioteki dotyczącą ECDSA.

FAQ

Który typ certyfikatu jest lepszy: RSA czy EC?

Certyfikaty EC są zalecane przez Ministerstwo Finansów ze względu na lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy. Jednak certyfikaty RSA mogą być łatwiejsze w implementacji z niektórymi bibliotekami. Oba typy są akceptowane przez KSeF.

Jakie są wymagania dla certyfikatów RSA w KSeF?

Certyfikaty RSA muszą mieć długość klucza 2048 bitów (OID: 1.2.840.113549.1.1.1). Algorytm podpisu to RSA-SHA256. Certyfikat musi zawierać rozszerzenia keyUsage (digitalSignature, nonRepudiation, keyEncipherment) oraz extendedKeyUsage (clientAuth).

Jakie są wymagania dla certyfikatów EC w KSeF?

Certyfikaty EC muszą używać krzywej secp256r1 (NIST P-256, prime256v1 w OpenSSL, OID: 1.2.840.10045.2.1). Algorytm podpisu to ECDSA z SHA-256. Certyfikat musi zawierać te same rozszerzenia co RSA.

Dlaczego certyfikat EC nie działa, a RSA działa?

Niektóre biblioteki kryptograficzne wymagają dodatkowej konfiguracji dla certyfikatów EC. Sprawdź, czy biblioteka poprawnie obsługuje ECDSA i czy używasz właściwego algorytmu podpisu. W razie problemów możesz użyć certyfikatów RSA, które są szerzej wspierane.

Czy mogę używać obu typów certyfikatów w tym samym systemie?

Tak, możesz używać zarówno certyfikatów RSA, jak i EC w tym samym systemie. Każdy certyfikat jest niezależny i może być używany do podpisywania dokumentów AuthTokenRequest. Wybór typu certyfikatu zależy od preferencji i możliwości biblioteki.

Powiązane tematy

Przydatne serwisy

Status KSeF

Pierwszy serwis prezentuje informacje o statusie samego KSeF, drugi – komunikaty techniczne Ministerstwa Finansów.

Dalsze korzystanie z tej witryny oznacza akceptację Polityki prywatności . Używamy plików cookie, aby zapewnić najlepszą jakość korzystania z naszej witryny internetowej. Przeczytaj naszą Politykę plików cookie .
Akceptuj Odrzuć