openssl Zertifikat automatisch erstellen

P

panzaeron

Jungspund
Hallo, nach dem mein sed-Problem gelöst ist, gleich die nächste Frage :)

Ich möchte durch ein Skript möglichst automatisch openssl Zertifikate für OpenVPN-Clients erstellen.

Bisher erstelle ich die Clients so:
Code:
...
#
# Schlüsselpaar generieren
#
if test $KEY_DIR; then
    echo "Generiere Schlüsselpaar für $BK..."
    openssl req -days 3650 -nodes -new -keyout $KEY_DIR/vpn_$BK.key -out $KEY_DIR/vpn_$BK.csr -config $KEY_CONFIG && \
    openssl ca -days 3650 -out $KEY_DIR/vpn_$BK.crt -in $KEY_DIR/vpn_$BK.csr -config $KEY_CONFIG -subject && \
    chmod 0600 $KEY_DIR/vpn_$BK.key
else
    echo 'Kein Schlüsselverzeichnis (KEY_DIR) definiert.'
    exit 1;
fi
wobei $BK ein Benutzerkürzel ist, welcher beim Aufrufen des Skripts übergeben wird. Soweit funktioniert das alles ganz gut. Aber leider fragt openssl beim erstellen noch verschiedene Parameter ab:
Code:
..
writing new private key to '/etc/openvpn/keys/vpn_sdas.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Bundesland]:
Locality Name (eg, city) [Stadt]:
Organization Name (eg, company) [Firma]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []: vpn_BK
Email Address [bbs@bbs-walsrode.de]:mail@adresse.de

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
..
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Die Angaben die abgefragt werden, sollen mit Standardwerten bzw. mit Werten aus einer Datenbank automatisch ausgefüllt werden. Kann ich diese in den openssl Aufruf integrieren? Ich habe im Internet und der Doku keine passenden Optionen gefunden. Hat jemand einen Rat?
 
@Schlaubi_fi.de
Vielen Danke für den Hinweis, expect kannte ich noch gar nicht.
Für mein openssl Problem hab ich aber eine bessere Lösung gefunden, manchmal hilft es nur die Doku detailliert zu lesen ;)
Die Informationen kann man mit dem Parameter -subj "...Infos..." vorgeben und die sonstigen Abfragen mit dem Parameter -batch unterbinden. So funktioniert es bei mir.
 
Hallo,

sowas ähnliches habe ich mir schon gedacht, nur war ich zu faul
die openssl man-Page zu lesen :D
Natürlich viel viel besser! Da sparst Du Dir ein Haufen Arbeit, aber ich
denke gut zu wissen, dass man interaktive Abfragen (wie bei ftp, telnet und
Konsorten) auch mit expect bewältigen könnte oder? *g
 
Hi,

erst mal danke für den Tipp aber:

Wie hast du es fertiggebracht die y/n Abfrage im 2. Befehl wegzukriegen
openssl ca -days 3650 -out $KEY_DIR/vpn_$BK.crt -in $KEY_DIR/vpn_$BK.csr -config $KEY_CONFIG -subject && \

Am besten wäre es auch wenn die Passwortabfrage wegfällt.

mfg Daniel
 
@schlaubi_fi.de
Da hast du recht, ich denke das werde ich auch nochmal brauchen :)

@Daniel Wegemer
Meine Befehlszeile sieht so aus:
Code:
openssl req -days 3650 -nodes -new -keyout client.key -out client.csr -config \pfad\zu\configs \
-subj "/C=DE/ST=Bundesland/L=Stadt/O=Organisation/CN=EindeutigerName/emailAddress=EMAILADRESE" \
-passin pass:PASSWORT -passout pass:PASSWORT && \
openssl ca -days 3650 -out client.crt -in client.csr -config \pfad\zu\configs \
-batch -passin pass:PASSWORT -key password && \
chmod 0600 client.key

Ich hab keine Passwortabfrage mehr, allerdings sollte so beim Verbinden nach dem Passwort gefragt werden, was nicht geschieht, also so ganz 100%ig ist es noch nicht.
 
Hi panzaeron,

danke für dein Script. Aber nun stehe ich vor einem neuen Problem. Du musst ja den Befehl "openssl" mit root Rechten ausführen und da ich Ubuntu benutze muss ich da ja ein sudo davorsetzen. Jetzt fragt er mich natürlich nach einem Passwort !
Wenn ich openssl ohne ein "sudo" vorraus eingebe kann er z.b. mit fopen seine eigenen erstellten dateien nicht öffnen?!

Kann ich das mit irgendwelchen anderen Rechten ändern?

mfg Daniel
 
Hallo
Du könntest z.B. deine sudoerrs anpassen.
Gruß Wolfgang
 

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

MacBook Pro hat Benutzer-Konten vergessen

Samba 4.1.9 mit Bind 9.9.4

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Zurück
Oben