OPENSSL(1ssl)

NAZWA
openssl - program wiersza poleceń do biblioteki OpenSSL

SKŁADNIA
openssl polecenie [ opcje ... ] [ parametry ... ]

openssl no-XXX [ opcje ]

openssl -help | -version

OPIS
OpenSSL to zestaw narzędzi kryptograficznych implementujący protokoły sieciowe Secure Sockets Layer (SSL) i Transport Layer Security (TLS) oraz wymagane przez nie standardy kryptograficzne.

Program openssl to program wiersza poleceń przeznaczony do używania różnych funkcji kryptograficznych biblioteki crypto OpenSSL z poziomu powłoki. Można go używać do:

 o Tworzenia i zarządzania kluczami prywatnymi, publicznymi i ich parametrami
 o Operacji kryptograficznych na kluczach publicznych
 o Wystawiania certyfikatów X.509, CSR oraz CRL
 o Obliczania skrótów wiadomości i kodów uwierzytelniania wiadomości
 o Szyfrowania i deszyfrowania
 o Testowania klientów i serwerów SSL/TLS
 o Obsługi poczty z podpisem S/MIME lub zaszyfrowanej
 o Generowania i weryfikowania żądań znaczników czasowych

PODSUMOWANIE POLECEŃ
Program openssl dostarcza wielu różnych poleceń (polecenie w rozdziale „SKŁADNIA” powyżej). Każde ma mnóstwo opcji i argumentów, pokazanych powyżej jako opcje i parametry.

Dostępna jest szczegółowa dokumentacja i przykłady użycia dla najpopularniejszych podpoleceń (np. openssl-x509(1)). Podpoleceniem openssl-list(1) można wypisać listę podpoleceń.

Polecenie no-XXX sprawdza obecność polecenia o podanej nazwie. Jeśli XXX nie jest dostępne, zwraca 0 (kod powodzenia) i wypisuje no-XXX; w przeciwnym razie zwraca 1 i wypisuje XXX. W obydwu przypadkach efekty są kierowane na standardowe wyjście i nic nie pojawia się na standardowym wyjściu błędów. Dodatkowe argumenty wiersza poleceń są zawsze ignorowane. Ponieważ każdy szyfr jest wywoływany przez polecenie o takiej samej nazwie jak on sam, łatwo sprawdzić dostępność szyfrów w openssl z poziomu powłoki. (no-XXX nie potrafi wykrywać pseudopoleceń takich jak quit, list, czy samego no-XXX).

  Opcje konfiguracyjne
Wiele poleceń korzysta z zewnętrznego pliku konfiguracyjnego do kilku lub wszystkich argumentów i może posiadać opcję -config określającą taki plik. Domyślną nazwą pliku jest openssl.cnf w domyślnym miejscu przechowywania certyfikatów, który można sprawdzić poleceniem openssl-version(1) z opcją -d lub -a. Zmienna środowiskowa OPENSSL_CONF może posłużyć do określenia innego położenia pliku lub wyłączenia ładowania konfiguracji (podając pusty łańcuch).

Plik konfiguracyjny może być używany między innymi do ładowania modułów i określania parametrów do generowania certyfikatów oraz liczb losowych. Więcej szczegółów w podręczniku config(5).

  Polecenia standardowe

asn1parse
    Analiza składni sekwencji ANS.1.

ca  Zarządzanie ośrodkami certyfikacji (CA).

ciphers
    Opis zestawu dostępnych szyfrów.

cms Polecenie CMS (Cryptographic Message Syntax).

crl Zarządzanie listą unieważnionych certyfikatów (CRL).

crl2pkcs7
    Konwersja z CRL do PKCS#7.

dgst
    Obliczanie skrótu wiadomości. Skróty wiadomości zostały zastąpione przez openssl-mac(1).

dhparam
    Tworzenie i zarządzanie parametrami Diffiego-Hellmana. Zastąpione przez genpkey(1) i pkeyparam(1).

dsa Zarządzanie danymi DSA.

dsaparam
    Tworzenie i zmienianie DSA. Zastąpione przez openssl-genpkey(1) i openssl-pkeyparam(1).

ec  Przetwarzanie klucza EC (Elliptic curve - krzywych eliptycznych).

ecparam
    Tworzenie i zmienianie parametrów EC.

enc Szyfrowanie, odszyfrowywanie i kodowanie.

engine
    Informacja o silnikach (modułach ładowalnych) i zarządzanie nimi.

errstr
    Konwersja numeru błędu na komunikat błędu.

fipsinstall
    Instalacja konfiguracji FIPS.

gendsa
    Tworzenie prywatnego klucza DSA na podstawie parametrów. Zastąpione openssl-genpkey(1) i openssl-pkey(1).

genpkey
    Tworzenie kluczy prywatnych lub parametrów.

genrsa
    Tworzenie klucza prywatnego RSA. Zastąpione przez openssl-genpkey(1).

help
    Wyświetlenie informacji o opcjach polecenia.

info
    Wyświetlenie różnych informacji wbudowanych w biblioteki OpenSSL.

kdf Key Derivation Functions – funkcje wyprowadzania klucza.

list
    Wypisanie algorytmów i funkcji.

mac Obliczanie Message Authentication Code – kodu uwierzytelniania wiadomości.

nseq
    Tworzenie lub sprawdzanie sekwencji certyfikatów Netscape.

ocsp
    Polecenie protokołu stanu certyfikatu.

passwd
    Generowanie skrótu hasła.

pkcs12
    Zarządzanie danymi w formacie PKCS#12.

pkcs7
    Zarządzanie danymi w formacie PKCS#7.

pkcs8
    Polecenie konwersji klucza prywatnego w formacie PKCS#8.

pkey
    Zarządzanie kluczami publicznymi i prywatnymi

pkeyparam
    Zarządzanie parametrami algorytmu klucza publicznego.

pkeyutl
    Polecenie operacji algorytmu kryptograficznego klucza publicznego.

prime
    Obliczanie liczb pierwszych.

rand
    Tworzenie pseudolosowych bajtów.

rehash
    Tworzenie dowiązań symbolicznych do certyfikatów i plików CRL nazwanych według wartości skrótu.

req Zarządzanie żądaniami podpisu certyfikatu PKCS#10 X.509 (CSR).

rsa Zarządzanie kluczem RSA.

rsautl
    Polecenie do podpisywania, weryfikowania, szyfrowania i deszyfrowania RSA. Zastąpione przez openssl-pkeyutl(1).

s_client
    Implementacja podstawowego klienta SSL/TLS mogącego nawiązywać przezroczyste połączenia z odległym serwerem na SSL/TLS. Służy jedynie do testowania i dostarcza tylko podstawowej funkcjonalności interfejsu, ale wewnętrznie korzysta z niemal pełnych możliwości biblioteki OpenSSL ssl.

s_server
    Implementacja podstawowego serwera SSL/TLS przyjmującego połączenia od odległych klientów obsługujących SSL/TLS. Służy jedynie do testowania i dostarcza tylko podstawowej funkcjonalności interfejsu, ale wewnętrznie korzysta z niemal pełnych możliwości biblioteki OpenSSL ssl. Zawiera zarówno własny protokół wiersza poleceń do testowania funkcji SSL, jak i emuluje prosty serwer sieciowy SSL/TLS oparty na HTTP.

s_time
    Licznik czasu połączenia SSL.

sess_id
    Zarządzanie danymi sesji SSL.

smime
    Przetwarzanie poczty S/MIME.

speed
    Mierzenie szybkości algorytmu.

spkac
    Polecenie wypisywania i generowania SPKAC.

srp Zarządzanie plikiem haseł SRP. To polecenie jest przestarzałe.

storeutl
    Polecenie do wypisywania i wyświetlania certyfikatów, kluczy, CRL-i itp.

ts  Polecenie Time Stamping Authority.

verify
    Weryfikacja certyfikatu X.509. Zob. też podręcznik openssl-verification-options(1).

version
    Informacja o wersji OpenSSL.

x509
    Zarządzanie certyfikatami X.509.

  Polecenia skrótu wiadomości

blake2b512
    Skrót BLAKE2b-512

blake2s256
    Skrót BLAKE2s-256

md2 Skrót MD2

md4 Skrót MD4

md5 Skrót MD5

mdc2
    Skrót MDC2

rmd160
    Skrót RMD-160

sha1
    Skrót SHA-1

sha224
    Skrót SHA-2 224

sha256
    Skrót SHA-2 256

sha384
    Skrót SHA-2 384

sha512
    Skrót SHA-2 512

sha3-224
    Skrót SHA-3 224

sha3-256
    Skrót SHA-3 256

sha3-384
    Skrót SHA-3 384

sha3-512
    Skrót SHA-3 512

keccak-224
    Skrót KECCAK 224

keccak-256
    Skrót KECCAK 256

keccak-384
    Skrót KECCAK 384

keccak-512
    Skrót KECCAK 512

shake128
    Skrót SHA-3 SHAKE128

shake256
    Skrót SHA-3 SHAKE256

sm3 Skrót SM3

  Polecenia szyfrowania, odszyfrowywania i kodowania
Poniższe aliasy zapewniają wygodny dostęp do najpopularniejszych kodowań i szyfrów.

W zależności od sposobu skonfigurowania i zbudowania OpenSSL, nie wszystkie poniższe szyfry mogą być obecne. Więcej informacji w podręczniku openssl-enc(1).

aes128, aes-128-cbc, aes-128-cfb, aes-128-ctr, aes-128-ecb, aes-128-ofb
    Szyfr AES-128

aes192, aes-192-cbc, aes-192-cfb, aes-192-ctr, aes-192-ecb, aes-192-ofb
    Szyfr AES-192

aes256, aes-256-cbc, aes-256-cfb, aes-256-ctr, aes-256-ecb, aes-256-ofb
    Szyfr AES-256

aria128, aria-128-cbc, aria-128-cfb, aria-128-ctr, aria-128-ecb, aria-128-ofb
    Szyfr Aria-128

aria192, aria-192-cbc, aria-192-cfb, aria-192-ctr, aria-192-ecb, aria-192-ofb
    Szyfr Aria-192

aria256, aria-256-cbc, aria-256-cfb, aria-256-ctr, aria-256-ecb, aria-256-ofb
    Szyfr Aria-256

base64
    Kodowanie Base64

bf, bf-cbc, bf-cfb, bf-ecb, bf-ofb
    Szyfr Blowfish

camellia128, camellia-128-cbc, camellia-128-cfb, camellia-128-ctr, camellia-128-ecb, camellia-128-ofb
    Szyfr Camellia-128

camellia192, camellia-192-cbc, camellia-192-cfb, camellia-192-ctr, camellia-192-ecb, camellia-192-ofb
    Szyfr Camellia-192

camellia256, camellia-256-cbc, camellia-256-cfb, camellia-256-ctr, camellia-256-ecb, camellia-256-ofb
    Szyfr Camellia-256

cast, cast-cbc
    Szyfr CAST

cast5-cbc, cast5-cfb, cast5-ecb, cast5-ofb
    Szyfr CAST5

chacha20
    Szyfr Chacha20

des, des-cbc, des-cfb, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ofb
    Szyfr DES

des3, desx, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-ofb
    Szyfr Triple-DES

idea, idea-cbc, idea-cfb, idea-ecb, idea-ofb
    Szyfr IDEA

rc2, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb
    Szyfr RC2

rc4 Szyfr RC4

rc5, rc5-cbc, rc5-cfb, rc5-ecb, rc5-ofb
    Szyfr RC5

seed, seed-cbc, seed-cfb, seed-ecb, seed-ofb
    Szyfr SEED

sm4, sm4-cbc, sm4-cfb, sm4-ctr, sm4-ecb, sm4-ofb
    Szyfr SM4

OPCJE
Dostępne opcje zależą od konkretnego polecenia. Niniejszy rozdział opisuje najczęstsze opcje z ich standardowym zachowaniem.

  Opcje programu
Poniższe opcje można podać bez polecenia, aby uzyskać pomoc lub informacje o wersji.

-help
    Pokazuje zwięzłe podsumowanie wszystkich opcji. Więcej szczegółowych informacji dostarczy opcja -help danego polecenia. Przyjmuje również postać --help.

-version
    Pokazuje zwięzłe podsumowanie wersji programu openssl. Zob. openssl-version(1), aby uzyskać więcej informacji. Przyjmuje również postać --version.

  Ogólne opcje

-help
    Jeśli opcja przyjmuje argument, podany jest również jego „typ”.

--  W ten sposób zamyka się listę opcji. Najbardziej przydatne, gdy jakiś parametr z nazwą pliku zaczyna się od minusa:

     openssl verify [flagi...] -- -cert1.pem...

  Opcje formatu
Zob. podręcznik openssl-format-options(1).

  Opcje hasła
Zob. podręcznik openssl-passphrase-options(1).

  Opcja stanu losowości
Przed OpenSSL 1.1.1, częstą praktyką było przechowywanie informacji o stanie generatora liczb losowych w pliku, który był ładowany przy starcie i nadpisywany przy wyjściu. We współczesnych systemach operacyjnych zwykle nie jest to dłużej konieczne, ponieważ OpenSSL pobierze ziarno z zaufanego źródła entropii, zapewnionego przez system operacyjny. Poniższe opcje są wciąż obsługiwane w celu obsługi specjalnych platfor lub przypadków, które mogą ich wymagać.

Zwykle błędem jest używanie tego samego pliku z ziarnem więcej niż jednokrotnie, a każde zastosowanie -rand powinno być połączone z -writerand.

-rand pliki
    Plik lub pliki z danymi losowymi używanymi jako ziarno do generatora liczb losowych. Można podać wiele plików, rozdzielając je separatorem zależnym od używanego systemu operacyjnego. Separatorem jest: „;” w MS-Windows, „,” w OpenVMS i „:” we wszystkich pozostałych systemach. Innym sposobem podania wielu plików jest podanie tej opcji dla każdego pliku z osobna.

-writerand plik
    Zapisuje dane ziarna do podanego pliku przy wyjściu. Pliku można użyć przy kolejnym wywołaniu polecenia.

  Opcje weryfikacji certyfikatu
Zob. podręcznik openssl-verification-options(1).

  Opcje formatu nazwy
Zob. podręcznik openssl-namedisplay-options(1).

  Opcje wersji TLS
Wiele poleceń używa SSL, TLS lub DTLS. Domyślnie polecenia używają TLS, a klienty informują o najniższej i najwyższej obsługiwanej przez nie wersji, po czym serwery wybierają najwyższą wersję oferowaną przez klienta, którą obsługuje również serwer.

Poniższych opcji można użyć, aby ograniczyć wersje protokołu, jakich będzie można użyć oraz aby wybrać, czy będzie stosowane TCP (SSL i TLS) czy UDP (DTLS). Proszę zauważyć, że nie wszystkie protokoły i opcje mogą być dostępne, w zależności od sposobu, w jaki zbudowano OpenSSL.

-ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3
    Opcje te wymagają lub wyłączają korzystanie z podanych protokołów SSL lub TLS. Gdy wymagana jest określona wersja TLS, tylko ona zostanie zaoferowana lub zaakceptowana. Można podać tylko jeden protokół i nie można go łączyć z żadną z opcji no_. Opcje no_* nie działają z poleceniami s_time i ciphers, lecz działają z poleceniami s_client i s_server.

-dtls, -dtls1, -dtls1_2
    Opcje te nakazują stosowanie DTLS zamiast TLS. Z -dtls, klienty będą negocjować dowolną obsługiwaną wersję protokołu DTLS. Aby obsługiwać wyłącznie DTLS1.0 lub DTLS1.2, należy zastosować, odpowiednio, -dtls1 lub -dtls1_2.

  Opcje silnika

-engine id
    Ładuje silnik o identyfikatorze id i używa wszystkich metod przez niego implementowanych (algorytmów, przechowywania kluczy itp.), o ile nie podano inaczej w dokumentacji danego polecenia, albo nie jest tak skonfigurowany, zgodnie z opisem „Konfiguracja silnika” w config(5).

    Silnik zostanie użyty do identyfikatorów kluczy podanych opcją -key i podobnymi opcjami, gdy poda się opcję taką jak -keyform engine.

    Specjalnym przypadkiem jest silnik „loader_attic”, który jest przeznaczony do wewnętrznych testów OpenSSL i obsługuje ładowanie kluczy, parametrów, certyfikatów i CRL-i z plików. Gdy korzysta się z tego silnika, pliki z takimi poświadczeniami są odczytywane poprzez ten silnik. Korzystanie z postaci „file:” jest opcjonalne, wystarczy sam plik (ścieżka).

Opcje określające klucze, takie jak -key i podobne, mogą korzystać z podstawowej postaci URI ładowania kluczy silnika OpenSSL „org.openssl.engine:”, aby pobierać klucze prywatne i publiczne. Składnia URI jest następująca, w uproszczonej postaci:

    org.openssl.engine:{id-silnika}:{id-klucza}

Gdzie „{id-silnika}” jest identyfikatorem/nazwą silnika a „{id-klucza}” jest identyfikatorem klucza akceptowanym przez silnik. Na przykład, gdy używa się silnika, które łączy się z implementacją PKCS#11, podstawowe URI klucza wyglądałoby mniej więcej tak (przy okazji jest to przykład silnika PKCS#11, będącego częścią OpenSC):

    -key org.openssl.engine:pkcs11:label_jakis-klucz-prywatny

Jako trzecia możliwość, silniki i dostawcy zapewniający swoje własne OSSL_STORE_LOADER(3), nie wymagają „org.openssl.engine:”. W przypadku implementacji PKCS#11, która zaimplementowała taki mechanizm ładujący, URI PKCS#11, zgodne z definicją z RFC 7512, powinno dać się stosować bezpośrednio:

    -key pkcs11:object=jakis-klucz-prywatny;pin-value=1234

  Opcje dostawcy

-provider nazwa
    Ładuje i inicjuje dostawcę identyfikowanego nazwą. Nazwa może być również ścieżką do modułu dostawcy. W takim przypadku, nazwą dostawcy będzie podana ścieżka, a nie sama nazwa modułu dostawcy. Interpretacja ścieżek względnych zależy od platformy. Skonfigurowana ścieżka „MODULESDIR”, zmienna środowiskowa OPENSSL_MODULES lub ścieżka podana przez -provider-path jest dołączana przed ścieżkami względnymi. Więcej szczegółów w podręczniku provider(7).

-provider-path ścieżka
    Określa ścieżkę przeszukiwania, pod którą wyszukiwani są dostawcy. Równoważnie można ustawić zmienną środowiskową OPENSSL_MODULES.

-provparam [nazwa:]klucz=wartość
    Ustawia parametr konfiguracyjny klucz na wartość wartość u dostawcy nazwa (opcjonalne); jeśli nie poda się nazwy, to ustawienie zostanie zastosowane do wszystkich dostawców. Opcję można podać wielokrotnie, aby ustawić wiele parametrów. Opcje określające ładowanie dostawców innych niż domyślni, powinny poprzedzać niniejszą opcję, jeśli mają się stosować do mających być załadowanych dostawców. Parametry wpływające tylko na inicjowanie dostawców muszą być, obecnie, ustawione w pliku konfiguracyjnym, jedynie parametry, które są odpytywane jako potrzebne później, będą odnosiły skutek za pomocą opisywanego interfejsu. Obsługiwane są tylko parametry z wartościami łańcuchów UTF8. Obsługiwane parametry opisano w dokumentacji danych dostawców i powiązanych algorytmów.

-propquery klauzula
    Określa klauzulę zapytań o właściwości do użycia przy pobieraniu algorytmów od załadowanych dostawców. Więcej informacji w podręczniku property(7)

ŚRODOWISKO
Biblioteki OpenSSL mogą przyjmować pewne parametry konfiguracyjne ze środowiska.

Informacje o wszystkich zmiennych środowiskowych używanych przez biblioteki OpsnSSL, takie jak OPENSSL_CONF, OPENSSL_MODULES i OPENSSL_TRACE, znajdują się w podręczniku openssl-env(7).

Informacje o sposobach stosowania zmiennych środowiskowych w konfiguracji, opisano w rozdziale „środowisko” w podręczniku config(5).

Informacje o określonych poleceniach opisano w podręcznikach openssl-engine(1), openssl-rehash(1) i tsget(1).

Informacje o odpytywaniu lub podawaniu flag architektury procesora opisano w podręcznikach OPENSSL_ia32cap(3), OPENSSL_ppccap(3), OPENSSL_s390xcap(3) i OPENSSL_riscvcap(3).

ZOBACZ TAKŻE
openssl-asn1parse(1), openssl-ca(1), openssl-ciphers(1), openssl-cms(1), openssl-crl(1), openssl-crl2pkcs7(1), openssl-dgst(1), openssl-dhparam(1), openssl-dsa(1), openssl-dsaparam(1), openssl-ec(1), openssl-ecparam(1), openssl-enc(1), openssl-engine(1), openssl-errstr(1), openssl-gendsa(1), openssl-genpkey(1), openssl-genrsa(1), openssl-kdf(1), openssl-list(1), openssl-mac(1), openssl-nseq(1), openssl-ocsp(1), openssl-passwd(1), openssl-pkcs12(1), openssl-pkcs7(1), openssl-pkcs8(1), openssl-pkey(1), openssl-pkeyparam(1), openssl-pkeyutl(1), openssl-prime(1), openssl-rand(1), openssl-rehash(1), openssl-req(1), openssl-rsa(1), openssl-rsautl(1), openssl-s_client(1), openssl-s_server(1), openssl-s_time(1), openssl-sess_id(1), openssl-smime(1), openssl-speed(1), openssl-spkac(1), openssl-srp(1), openssl-storeutl(1), openssl-ts(1), openssl-verify(1), openssl-version(1), openssl-x509(1), config(5), crypto(7), openssl-env(7). ssl(7), x509v3_config(5)

HISTORIA
Opcje list -XXX-algorytmy dodano w OpenSSL 1.0.0; informacje o dostępności innych poleceń opisano w poszczególnych podręcznikach systemowych.

Opcja -issuer_checks została uznana za przestarzałą według stanu na OpenSSL 1.1.0 i jest po cichu ignorowana.

Opcje -xcertform i -xkeyform są przestarzałe od OpenSSL 3.0 i nie odnoszą skutku.

Tryb interaktywny, który można było przywołać uruchamiając „openssl” bez żadnych argumentów, usunięto w OpenSSL 3.0; obecnie uruchomienie programu bez argumentów odpowiada podaniu „openssl help”.

PRAWA AUTORSKIE
Copyright 2000-2025 The OpenSSL Project Authors. Wszystkie prawa zastrzeżone.

Licencjonowane na warunkach licencji Apache License 2.0 („Licencja”) Korzystanie dozwolone tylko w zgodzie z Licencją. Jej kopia jest dostępna w pliku LICENSE w źródłach lub na stronie <https://www.openssl.org/source/license.html>.

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Daniel Koć <kocio@linuxnews.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.