openssl - OpenSSL-Befehlszeilenprogramm
SYNOPSIS
openssl befehl [ optionen ... ] [ parameter ... ]
openssl no-XXX [ optionen ]
openssl -help | -version
BESCHREIBUNG
OpenSSL ist ein Kryptographie-Toolkit, das die Netzwerkprotokolle Secure Sockets Layer (SSL) und Transport Layer Security (TLS) sowie die damit verbundenen Kryptographie-Standards implementiert.
Das Programm openssl ist ein Befehlszeilenprogramm, um die verschiedenen Kryptographie-Funktionen der OpenSSL-Krypto-Bibliothek von der Shell aus zu nutzen. Es kann für Folgendes verwendet werden:
o Erstellung und Verwaltung von privaten Schlüsseln, öffentlichen Schlüsseln und Parametern
o Kryptographische Operationen mit öffentlichen Schlüsseln
o Erstellung von X.509-Zertifikaten, CSRs und CRLs
o Berechnung von Message Digests und Message Authentication Codes
o Verschlüsselung und Entschlüsselung mit Chiffren
o SSL/TLS-Client- und Server-Tests
o Verarbeitung von S/MIME-signierten oder -verschlüsselten E-Mails
o Zeitstempelanfragen, -generierung und -verifizierung
BEFEHLSÜBERSICHT
Das Programm openssl bietet eine Vielzahl von Befehlen (Befehl in der obigen "SYNOPSIS"). Jeder Befehl kann viele Optionen und Argumentparameter haben, wie oben als Optionen und Parameter dargestellt.
Detaillierte Dokumentation und Anwendungsfälle für die meisten Standard-Subbefehle sind verfügbar (z. B. openssl-x509(1)). Der Subbefehl openssl-list(1) kann verwendet werden, um Subbefehle aufzulisten.
Der Befehl no-XXX testet, ob ein Befehl mit dem angegebenen Namen verfügbar ist. Wenn kein Befehl mit dem Namen XXX existiert, wird 0 (Erfolg) zurückgegeben und no-XXX ausgegeben; andernfalls wird 1 zurückgegeben und XXX ausgegeben. In beiden Fällen wird die Ausgabe an stdout gesendet und nichts an stderr ausgegeben. Zusätzliche Befehlszeilenargumente werden immer ignoriert. Da es für jede Chiffre einen Befehl mit demselben Namen gibt, bietet dies eine einfache Möglichkeit für Shell-Skripte, die Verfügbarkeit von Chiffren in dem Programm openssl zu testen. (no-XXX kann keine Pseudo-Befehle wie quit, list oder no-XXX selbst erkennen.)
Konfigurationsoption
Viele Befehle verwenden eine externe Konfigurationsdatei für einige oder alle ihrer Argumente und haben eine Option -config, um diese Datei anzugeben. Der Standardname der Datei ist openssl.cnf im standardmäßigen Zertifikatspeicherbereich, der mit dem Befehl openssl-version(1) mit den Optionen -d oder -a ermittelt werden kann. Die Umgebungsvariable OPENSSL_CONF kann verwendet werden, um einen anderen Dateispeicherort anzugeben oder das Laden einer Konfiguration zu deaktivieren (mit der leeren Zeichenkette).
Unter anderem kann die Konfigurationsdatei verwendet werden, um Module zu laden und Parameter für die Generierung von Zertifikaten und Zufallszahlen anzugeben. Siehe config(5) für Details.
Standardbefehle
asn1parse
Analysiert eine ASN.1-Sequenz.
ca Zertifizierungsstellenverwaltung (CA).
ciphers
Bestimmung der Beschreibung der Verschlüsselungs-Suite.
cms CMS (Cryptographic Message Syntax)-Befehl.
crl Zertifikatsperrliste (CRL)-Verwaltung.
crl2pkcs7
CRL- zu PKCS#7-Konvertierung.
dgst
Berechnung von Nachrichten-Digests. MAC-Berechnungen werden durch openssl-mac(1) ersetzt.
dhparam
Generierung und Verwaltung von Diffie-Hellman-Parametern. Wird durch openssl-genpkey(1) und
openssl-pkeyparam(1) ersetzt.
dsa DSA-Datenverwaltung.
dsaparam
DSA-Parametergenerierung und -verwaltung. Wird durch openssl-genpkey(1) und
openssl-pkeyparam(1) ersetzt.
ec EC (Elliptische-Kurven-)Schlüsselverarbeitung.
ecparam
Manipulation und Generierung von EC-Parametern.
enc Verschlüsselung, Entschlüsselung und Kodierung.
engine
Informationen und Manipulation von Engines (ladbaren Modulen).
errstr
Konvertierung von Fehlernummer zu Fehlerzeichenkette.
fipsinstall
FIPS-Konfigurationsinstallation.
gendsa
Generierung eines DSA-Privatschlüssels aus Parametern. Wird durch openssl-genpkey(1) und
openssl-pkey(1) ersetzt.
genpkey
Generierung eines privaten Schlüssels oder von Parametern.
genrsa
Generierung eines RSA-Privatschlüssels. Wird durch openssl-genpkey(1) ersetzt.
help
Anzeigen von Informationen über die Optionen eines Befehls.
info
Anzeigen verschiedener in den OpenSSL-Bibliotheken integrierter Informationen.
kdf Schlüsselerzeugungsfunktionen.
list
Auflisten von Algorithmen und Funktionen.
mac Berechnung des Message Authentication Code.
nseq
Erstellen oder Untersuchen einer Netscape-Zertifikatsequenz.
ocsp
Online-Zertifikatstatusprotokoll-Befehl.
passwd
Generierung von gehashten Passwörtern.
pkcs12
PKCS#12-Datenverwaltung.
pkcs7
PKCS#7-Datenverwaltung.
pkcs8
Befehl zur Konvertierung von privaten Schlüsseln im PKCS#8-Format.
pkey
Verwaltung von öffentlichen und privaten Schlüsseln.
pkeyparam
Verwaltung von Parametern für öffentliche Schlüsselalgorithmen.
pkeyutl
Befehl für kryptografische Operationen für öffentliche Schlüsselalgorithmen.
prime
Berechnung von Primzahlen.
rand
Generierung von Pseudo-Zufallsbytes.
rehash
Erstellen von symbolischen Links zu Zertifikats- und CRL-Dateien, die durch die Hashwerte benannt sind.
req PKCS#10 X.509-Zertifikatsignierungsanforderungsverwaltung (CSR).
rsa RSA-Schlüsselverwaltung.
rsautl
RSA-Befehl zum Signieren, Verifizieren, Verschlüsseln und Entschlüsseln. Wird durch
openssl-pkeyutl(1) ersetzt.
s_client
Dies implementiert einen generischen SSL/TLS-Client, der eine transparente Verbindung zu einem Remote-Server herstellen kann, der SSL/TLS verwendet. Er ist nur für Testzwecke bestimmt und bietet nur eine rudimentäre Schnittstellenfunktionalität, verwendet aber intern fast alle Funktionen der OpenSSL-SSL-Bibliothek.
s_server
Dies implementiert einen generischen SSL/TLS-Server, der Verbindungen von Remote-Clients akzeptiert, die SSL/TLS verwenden. Er ist nur für Testzwecke bestimmt und bietet nur eine rudimentäre Schnittstellenfunktionalität, verwendet aber intern fast alle Funktionen der OpenSSL-SSL-Bibliothek. Er bietet sowohl ein eigenes, auf der Befehlszeile basierendes Protokoll zum Testen von SSL-Funktionen als auch eine einfache HTTP-Antwortfunktion, um einen SSL/TLS-fähigen Webserver zu emulieren.
s_time
SSL-Verbindungs-Timer.
sess_id
SSL-Sitzungsdatenverwaltung.
smime
S/MIME-E-Mail-Verarbeitung.
speed
Algorithmus-Geschwindigkeitsmessung.
spkac
SPKAC-Befehl zum Drucken und Generieren.
srp
SRP-Passwortdatei verwalten. Dieser Befehl ist veraltet.
storeutl
Befehl zum Auflisten und Anzeigen von Zertifikaten, Schlüsseln, CRLs usw.
ts
Time Stamping Authority-Befehl.
verify
X.509-Zertifikatsprüfung. Siehe auch die Handbuchseite openssl-verification-options(1).
version
OpenSSL-Versionsinformationen.
x509
X.509-Zertifikatsdatenverwaltung.
Befehle für Hash-Funktionen
blake2b512
BLAKE2b-512-Hash
blake2s256
BLAKE2s-256-Hash
md2
MD2-Hash
md4
MD4-Hash
md5
MD5-Hash
mdc2
MDC2-Hash
rmd160
RMD-160-Hash
sha1
SHA-1-Hash
sha224
SHA-2 224-Hash
sha256
SHA-2 256-Hash
sha384
SHA-2 384-Hash
sha512
SHA-2 512-Hash
sha3-224
SHA-3 224-Hash
sha3-256
SHA-3 256-Hash
sha3-384
SHA-3 384-Hash
sha3-512
SHA-3 512-Hash
keccak-224
KECCAK 224-Hash
keccak-256
KECCAK 256-Hash
keccak-384
KECCAK 384-Hash
keccak-512
KECCAK 512-Hash
shake128
SHA-3 SHAKE128-Hash
shake256
SHA-3 SHAKE256-Hash
sm3
SM3-Hash
Befehle zum Verschlüsseln, Entschlüsseln und Kodieren
Die folgenden Aliase bieten bequemen Zugriff auf die am häufigsten verwendeten Kodierungen und Chiffren.
Je nachdem, wie OpenSSL konfiguriert und erstellt wurde, sind möglicherweise nicht alle hier aufgeführten Chiffren vorhanden. Weitere Informationen finden Sie unter openssl-enc(1).
aes128, aes-128-cbc, aes-128-cfb, aes-128-ctr, aes-128-ecb, aes-128-ofb
AES-128-Chiffre
aes192, aes-192-cbc, aes-192-cfb, aes-192-ctr, aes-192-ecb, aes-192-ofb
AES-192-Chiffre
aes256, aes-256-cbc, aes-256-cfb, aes-256-ctr, aes-256-ecb, aes-256-ofb
AES-256-Chiffre
aria128, aria-128-cbc, aria-128-cfb, aria-128-ctr, aria-128-ecb, aria-128-ofb
Aria-128-Chiffre
aria192, aria-192-cbc, aria-192-cfb, aria-192-ctr, aria-192-ecb, aria-192-ofb
Aria-192-Chiffre
aria256, aria-256-cbc, aria-256-cfb, aria-256-ctr, aria-256-ecb, aria-256-ofb
Aria-256-Chiffre
base64
Base64-Kodierung
bf, bf-cbc, bf-cfb, bf-ecb, bf-ofb
Blowfish-Chiffre
camellia128, camellia-128-cbc, camellia-128-cfb, camellia-128-ctr, camellia-128-ecb, camellia-128-ofb
Camellia-128-Chiffre
camellia192, camellia-192-cbc, camellia-192-cfb, camellia-192-ctr, camellia-192-ecb, camellia-192-ofb
Camellia-192-Chiffre
camellia256, camellia-256-cbc, camellia-256-cfb, camellia-256-ctr, camellia-256-ecb, camellia-256-ofb
Camellia-256-Chiffre
cast, cast-cbc
CAST-Chiffre
cast5-cbc, cast5-cfb, cast5-ecb, cast5-ofb
CAST5-Chiffre
chacha20
Chacha20-Chiffre
des, des-cbc, des-cfb, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ofb
DES-Chiffre
des3, desx, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-ofb
Triple-DES-Chiffre
idea, idea-cbc, idea-cfb, idea-ecb, idea-ofb
IDEA-Chiffre
rc2, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb
RC2-Chiffre
rc4
RC4-Chiffre
rc5, rc5-cbc, rc5-cfb, rc5-ecb, rc5-ofb
RC5-Chiffre
seed, seed-cbc, seed-cfb, seed-ecb, seed-ofb
SEED-Chiffre
sm4, sm4-cbc, sm4-cfb, sm4-ctr, sm4-ecb, sm4-ofb
SM4-Chiffre
OPTIONEN
Welche Optionen für einen bestimmten Befehl verfügbar sind, hängt von diesem ab. Dieser Abschnitt beschreibt einige gängige Optionen mit einem üblichen Verhalten.
Programmänderungen
Diese Optionen können angegeben werden, ohne einen Befehl anzugeben, um Hilfe- oder Versionsinformationen zu erhalten.
-help
Bietet eine kurze Zusammenfassung aller Optionen. Für detailliertere Informationen unterstützt jeder Befehl eine Option -help. Akzeptiert auch --help.
-version
Bietet eine kurze Zusammenfassung der OpenSSL-Programmversion. Für detailliertere Informationen siehe openssl-version(1). Akzeptiert auch --version.
Gemeinsame Optionen
-help
Wenn eine Option ein Argument verwendet, wird auch der „Typ“ des Arguments angegeben.
-- Beendet die Liste der Optionen. Dies ist hauptsächlich nützlich, wenn alle Dateinamenparameter mit einem Minuszeichen beginnen:
openssl verify [Flags...] -- -cert1.pem...
Formatierungsoptionen
Siehe die Manpage openssl-format-options(1).
Passwort-Optionen
Siehe die Manpage openssl-passphrase-options(1).
Optionen für den Zufallszustand
Vor OpenSSL 1.1.1 war es üblich, dass Anwendungen Informationen über den Zustand des Zufallszahlengenerators in einer Datei speicherten, die beim Start geladen und beim Beenden neu geschrieben wurde. Auf modernen Betriebssystemen ist dies im Allgemeinen nicht mehr erforderlich, da sich OpenSSL aus einer vertrauenswürdigen Entropiequelle bezieht, die vom Betriebssystem bereitgestellt wird. Diese Flags werden weiterhin unterstützt, um spezielle Plattformen oder Umstände abzudecken, die dies möglicherweise erfordern.
Es ist im Allgemeinen ein Fehler, dieselbe Seed-Datei mehr als einmal zu verwenden, und jede Verwendung von -rand sollte mit -writerand kombiniert werden.
-rand Dateien
Eine oder mehrere Dateien, die Zufallsdaten enthalten, die zum Initialisieren des Zufallszahlengenerators verwendet werden. Mehrere Dateien können durch ein betriebssystemabhängiges Zeichen getrennt werden. Das Trennzeichen ist „;“ für MSWindows, „,“ für OpenVMS und „:“ für alle anderen. Eine andere Möglichkeit, mehrere Dateien anzugeben, besteht darin, dieses Flag mit verschiedenen Dateinamen zu wiederholen.
-writerand Datei
Schreibt die Seed-Daten beim Beenden in die angegebene Datei. Diese Datei kann bei einer nachfolgenden Befehlsaufruf verwendet werden.
Zertifikatsüberprüfungsoptionen
Siehe die Manpage openssl-verification-options(1).
Namensformatierungsoptionen
Siehe die Manpage openssl-namedisplay-options(1).
TLS-Versionsoptionen
Mehrere Befehle verwenden SSL, TLS oder DTLS. Standardmäßig verwenden die Befehle TLS, und Clients bieten die niedrigste und höchste unterstützte Protokollversion an, und Server wählen die höchste Version aus, die der Client anbietet und die vom Server unterstützt wird.
Die folgenden Optionen können verwendet werden, um die verwendeten Protokollversionen einzuschränken, und um zu bestimmen, ob TCP (SSL und TLS) oder UDP (DTLS) verwendet wird. Beachten Sie, dass nicht alle Protokolle und Flags verfügbar sind, abhängig davon, wie OpenSSL erstellt wurde.
-ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3
Diese Optionen erzwingen oder deaktivieren die Verwendung der angegebenen SSL- oder TLS-Protokolle. Wenn eine bestimmte TLS-Version erforderlich ist, wird nur diese Version angeboten oder akzeptiert. Es kann nur ein bestimmtes Protokoll angegeben werden, und es kann nicht mit einer der Optionen no_* kombiniert werden. Die Optionen no_* funktionieren nicht mit den Befehlen s_time und ciphers, aber mit den Befehlen s_client und s_server.
-dtls, -dtls1, -dtls1_2
Diese Optionen geben an, DTLS anstelle von TLS zu verwenden. Mit -dtls verhandeln Clients alle unterstützten DTLS-Protokollversionen. Verwenden Sie die Optionen -dtls1 oder -dtls1_2, um nur DTLS1.0 bzw. DTLS1.2 zu unterstützen.
Engine-Optionen
-engine id
Lädt die durch "id" identifizierte Engine und verwendet alle Methoden, die sie implementiert (Algorithmen, Schlüsselverwaltung usw.), sofern nicht durch die befehlsspezifische Dokumentation oder durch die Konfiguration, wie in "Engine-Konfiguration" in config(5) beschrieben, etwas anderes festgelegt ist.
Die Engine wird für Schlüssel-IDs verwendet, die mit -key und ähnlichen Optionen angegeben werden, wenn eine Option wie -keyform engine angegeben wird.
Ein Sonderfall ist die Engine "loader_attic", die nur für interne OpenSSL-Testzwecke gedacht ist und das Laden von Schlüsseln, Parametern, Zertifikaten und CRLs aus Dateien unterstützt. Wenn diese Engine verwendet wird, werden Dateien mit solchen Anmeldeinformationen über diese Engine gelesen. Die Verwendung des Schemas "file:" ist optional; ein einfacher Dateiname (Pfad) reicht aus.
Optionen, die Schlüssel angeben, wie z. B. -key und ähnliche, können das generische OpenSSL-Engine-Schlüssel-Lade-URI-Schema "org.openssl.engine:" verwenden, um private und öffentliche Schlüssel abzurufen. Die URI-Syntax ist in vereinfachter Form wie folgt:
org.openssl.engine:{engineid}:{keyid}
Dabei ist "{engineid}" die Identität/der Name der Engine und "{keyid}" eine Schlüssel-ID, die von dieser Engine akzeptiert wird. Zum Beispiel, wenn eine Engine verwendet wird, die mit einer PKCS#11-Implementierung interagiert, wäre das generische Schlüssel-URI wie folgt (dies ist ein Beispiel für die PKCS#11-Engine, die Teil von OpenSC ist):
-key org.openssl.engine:pkcs11:label_some-private-key
Als dritte Möglichkeit ist zu beachten, dass für Engines und Anbieter, die ihre eigene OSSL_STORE_LOADER(3) implementiert haben, "org.openssl.engine:" nicht erforderlich sein sollte. Für eine PKCS#11-Implementierung, die einen solchen Loader implementiert hat, sollte das PKCS#11-URI, wie in RFC 7512 definiert, direkt verwendet werden können:
-key pkcs11:object=some-private-key;pin-value=1234
Anbieter-Optionen
-provider name
Lädt und initialisiert den durch "name" identifizierten Anbieter. Der Name kann auch ein Pfad zur Anbieter-Moduldatei sein. In diesem Fall ist der Anbietername der angegebene Pfad und nicht nur der Name des Anbieter-Moduls. Die Interpretation relativer Pfade ist plattformspezifisch. Der konfigurierte Pfad "MODULESDIR", die Umgebungsvariable OPENSSL_MODULES oder der durch -provider-path angegebene Pfad werden relativen Pfaden vorangestellt. Siehe provider(7) für eine detailliertere Beschreibung.
-provider-path Pfad
Gibt den Suchpfad an, der zum Suchen von Providern verwendet werden soll. Alternativ kann die
Umgebungsvariable OPENSSL_MODULES gesetzt werden.
-provparam [Name:]Schlüssel=Wert
Legt den Konfigurationsparameter Schlüssel auf den Wert Wert im Provider Name fest (optional). Wenn Name nicht
angegeben ist, wird die Einstellung auf alle geladenen Provider angewendet. Diese Option kann mehrmals angegeben
werden, um mehrere Parameter festzulegen. Optionen, die nicht standardmäßige Provider zum Laden angeben, sollten
dieser Option vorausgehen, wenn die Einstellung auf die zu ladenden Provider angewendet werden soll. Parameter, die
nur die Provider-Initialisierung beeinflussen, müssen derzeit in der Konfigurationsdatei festgelegt werden; nur
Parameter, die auch bei Bedarf später abgefragt werden, haben eine Auswirkung, wenn sie über diese Schnittstelle
festgelegt werden. Es werden nur UTF8-String-basierte Parameter unterstützt. Weitere Informationen zu unterstützten
Parametern finden Sie in der Dokumentation des jeweiligen Providers und der zugehörigen Algorithmen.
-propquery Propq
Gibt die Eigenschaftsabfrage-Klausel an, die beim Abrufen von Algorithmen von den geladenen Providern verwendet
werden soll. Weitere Informationen finden Sie in property(7).
UMGEBUNG
Die OpenSSL-Bibliotheken können einige Konfigurationsparameter aus der Umgebung beziehen.
Weitere Informationen zu allen von den OpenSSL-Bibliotheken verwendeten Umgebungsvariablen, z. B. OPENSSL_CONF, OPENSSL_MODULES und OPENSSL_TRACE, finden Sie in openssl-env(7).
Weitere Informationen zur Verwendung von Umgebungsvariablen in der Konfiguration finden Sie im Abschnitt "UMGEBUNG" in config(5).
Weitere Informationen zu bestimmten Befehlen finden Sie in openssl-engine(1), openssl-rehash(1) und tsget(1).
Weitere Informationen zum Abfragen oder Angeben von CPU-Architektur-Flags finden Sie in OPENSSL_ia32cap(3), OPENSSL_s390xcap(3) und OPENSSL_riscvcap(3).
SIEHE AUCH
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).
HISTORIE
Die Optionen -XXX-Algorithmus wurden in OpenSSL 1.0.0 hinzugefügt; Anmerkungen zur Verfügbarkeit anderer Befehle finden Sie in den jeweiligen Handbuchseiten.
Die Option -issuer_checks ist seit OpenSSL 1.1.0 veraltet und wird stillschweigend ignoriert.
Die Optionen -xcertform und -xkeyform sind seit OpenSSL 3.0 veraltet und haben keine Wirkung.
Der interaktive Modus, der durch Ausführen von "openssl" ohne weitere Argumente aufgerufen werden konnte, wurde in OpenSSL 3.0 entfernt, und das Ausführen dieses Programms ohne Argumente entspricht jetzt "openssl help".
URHEBERRECHT
Copyright 2000-2025 Die OpenSSL-Projekt-Autoren. Alle Rechte vorbehalten.
Lizenziert unter der Apache-Lizenz 2.0 (die "Lizenz"). Sie dürfen diese Datei nicht verwenden, es sei denn, Sie halten sich an die Lizenz. Sie können eine Kopie in der Datei LICENSE in der Quellverteilung oder unter [https://www.openssl.org/source/license.html] erhalten.