KSeF API certyfikat RSA vs EC – różnice i wymagania
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.