corner image
home ·Howto OpenSSL


letzte Änderung:
TCP-States
Netzwerk
Links
Australien
Wertpapiere

Howto OpenSSL

Claus Ebert

Version 0.02

Was kann man alles mit OpenSSL anstellen, und vor allem WIE

1.Certificate Authority (SA) Konfiguration


1. Certificate Authority (SA) Konfiguration

Hier wird beschrieben, wie man seine eigene Certificate Authority (CA) erstellt (Erstellung eines root Zertifikates und Schlüssel mit dem man Server und Client Zertifikate signieren kann

1.1 Erstellung einer CA (Certificate Authority)

root Zertifikat Erstellung und Wartung

Eine eigene CA ist (speziell zum entwickeln und testen) eine wunderbare Sache. Clients können unser root Zertifikat importieren (welches Öffentlich zugänglich sein kann) und mit ihm die Identität des Servers überprüfen.
Viele Applikationen können auch das Gegenteil (der Server überprüft die Idendität des Clients)

Der Root schlüssel MUSS allerdings immer sicher verwahrt werden.

das root Zertifikat kann allerdings öffendlich zugänglich gemacht werden (Intranet, Internet)
In folgenden gehe ich davon aus, das OpenSSL unter /opt/openssl korrekt installiert ist.

top

1.2 Die Verzeichnisstruktur erstellen

zuerst erstellen wir alle benötigten Verzeichnisse.

mkdir /opt/LocalCA
cd /opt/LocalCA

mkdir certs
mkdir private
chmod 700 private

echo '01' > serial
touch index.txt

top

1.3 CA Kofigurations Datei

Erstellen einer Konfigurationsdatei mit dem wir unser roo-Zertifikat erstellen k&ounl;nnen.

#
# Default configuration to use  when one
# is not provided on the command line.
#
[ ca ]
default_ca    = local_ca

#
# Default location  of  directories  and
# files needed to generate certificates.
#
[ local_ca ]
dir             = /opt/LocalCA
certificate     = $dir/cacert.pem
database        = $dir/index.txt
new_certs_dir   = $dir/certs
private_key     = $dir/private/cakey.pem
serial          = $dir/serial

#
# Default   expiration   and  encryption
# policies for certificates.
#
default_crl_days        = 365
default_days            = 1825
default_md              = md5

policy          = local_ca_policy
x509_extensions = local_ca_extensions

#
# Default policy to use  when generating
# server   certificates.  The  following
# fields  must  be defined in the server
# certificate.
#
[ local_ca_policy ]
commonName              = supplied
stateOrProvinceName     = supplied
countryName             = supplied
emailAddress            = supplied
organizationName        = supplied
organizationalUnitName  = supplied

#
# x509 extensions to use when generating
# server certificates.
#
[ local_ca_extensions ]
subjectAltName          = DNS:altname.somewhere.com
basicConstraints        = CA:false
nsCertType              = server

#
# The   default   policy   to  use  when# The   default   policy   to  use  when
# generating the root certificate.
#
[ req ]
default_bits    = 2048
default_keyfile = /opt/LocalCA/private/cakey.pem
default_md      = md5

prompt                  = no
distinguished_name      = root_ca_distinguished_name
x509_extensions         = root_ca_extensions

#
# Root  Certificate  Authority   distin-
# guished name.  Changes these fields to
# your local environment.
#
[ root_ca_distinguished_name ]
commonName              = Local Lab Root Certificate Authority
stateOrProvinceName     = Some State
countryName             = US
emailAddress            = root@somename.somewhere.com
organizationName        = Root Certificate Authority

[ root_ca_extensions ]
basicConstraints        = CA:true

hier kann das obige Beispile heruntergeladen werden.

Das obige Konfigurations File hat viele Einstellungen, die den Bedürfnissen angepasst werden sollten.
Eins ausführliche Beschreibung befindet sich der OpenSSL Config man-Page. die einzelnen Werte werden in der cs, req  und x509 Man-pages beschrieben.

Folgende Werte sollten vorgenommen werden, wenn man das oblige Beispiel verwenden will:

[ local_ca ]

  • default_days die Anzahl der Tage die das Client oder Server Zertifikat gültig ist.
  • default_md der zu benutzende algorhytmus zur Schlüsselerstellung ( md5, sha1  und  mdc2 ).

[ local_ca_extensions ]

  • subjectAltName Alternativer Name unter den das Zertifikat bekannt ist. Diese Möglichkeit ist sehr hilfreich bei Gateway-Service (smtp oder imap) wo der Server auf beiden Seiten des Gateways verschiedene Namen kaben soll.
    Falls dies nicht benötigt wird sollte diese Option auskommentiert werden.
  • nsCertType Typ des Zertifikates (client, server). Einige Applikationen akzeptieren nur den "richtigen" Typ

[ root_ca_distinguished_name ]

  • commonName Der Name unter dem die CA bekannt sein soll
  • stateOrProvinceName Staat oder Provinz in dem siche die CA befindet
  • countryName Land in dem siche die CA befindet
  • emailAddress eMail-Adresse der für alle belange des Zertifikate zuständigen Person
  • organizationName Der offizielle Name mit die CA bekannt sein soll
top

1.4 Generieren des root Zertifikates und des root-Schlüssels

cd /opt/LocalCA
PATH=/opt/openssl/bin:$PATH
export PATH

OPENSSL_CONF=/opt/LocalCA/LocalCA.cnf
export OPENSSL_CONF

openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 1825

Während ddes Erstellens wird nach einem Passwort gefragt
Dieses Passwort sollte auf keinen Fall vergessen werden
Es wird immer dann benötigt wenn ein neues Zertifikat erstellt werden soll, oder fall etwas Signiert wird.

Mit dem obigen Prozess erstellen wir ein selbst signiertes ZXertifikat im PEM format und RSA public/private Verschlüsselung. Das Zertifikat ist 1825 Tage gültig und die Zertifikate werden unter

/opt/LocalCA/cacert.pem # CA public certificate
/opt/LocalCA/private/cakey.pem # CA private key

gespeichert



top
  ©2016· Claus Ebert · Emailemail senden