[Postfixbuch-users] Probleme mit Zertifikatserstellung

Muenz, Michael linux at leute.server.de
Di Mai 6 10:28:50 CEST 2003


Hi,

>ich habe unter SuSE 8.2 ein Problem mit der Zertifikatserstellung. Ich bin
den
>Anweisungen im Buch von Seite 325ff. gefolgt und habe erst CA.pl -newca
>ausgeführt, dann CA.pl -newreq. Soweit prima. Nach dem Signieren und dem
>nachfolgenden openssl-Befehl, geht es an das Kopieren.

bin zwar kein OpenSSL Spezialist aber ich bin mit
diesem CA.pl Script nie so wirklich klargekommen.
Hab mir aus der Apache2 Doku ein bisschen was
zusammengeschrieben wo es eigentlich ganz gut klappt.

Die Textdatei liegt anbei, is noch bisschen Schwachsinnsdoku
dabei, die darfste gern ignorieren :-)

- Michael
-------------- nächster Teil --------------
Erstellen einer Root CA fuer Apache 2 Webserver
-----------------------------------------------

OpenSSL installieren:
./config shared
make && make test && make install

Eigene Root CA erstellen:
/usr/local/ssl/bin/openssl genrsa -des3 -out ca.key 1024
/usr/local/ssl/bin/openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Private Server-Key erstellen:
/usr/local/ssl/bin/openssl genrsa -des3 -out server.key 1024

Inhalt anschauen:
/usr/local/ssl/bin/openssl rsa -noout -text -in server.key

Certificate Signing Request (CSR) erstellen
CommonName ist URL:
/usr/local/ssl/bin/openssl req -new -key server.key -out server.csr

In /usr/local/ssl ein Script erstellen (sign.sh): 
#!/bin/sh
##
##  sign.sh -- Sign a SSL Certificate Request (CSR)
##  Copyright (c) 1998-2001 Ralf S. Engelschall, All Rights Reserved.
##

#   argument line handling
CSR=$1
if [ $# -ne 1 ]; then
    echo "Usage: sign.sign <whatever>.csr"; exit 1
fi
if [ ! -f $CSR ]; then
    echo "CSR not found: $CSR"; exit 1
fi
case $CSR in
   *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
       * ) CERT="$CSR.crt" ;;
esac

#   make sure environment exists
if [ ! -d ca.db.certs ]; then
    mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]; then
    echo '01' >ca.db.serial
fi
if [ ! -f ca.db.index ]; then
    cp /dev/null ca.db.index
fi

#   create an own SSLeay config
cat >ca.config <<EOT
[ ca ]
default_ca              = CA_own
[ CA_own ]
dir                     = .
certs                   = \$dir
new_certs_dir           = \$dir/ca.db.certs
database                = \$dir/ca.db.index
serial                  = \$dir/ca.db.serial
RANDFILE                = \$dir/ca.db.rand
certificate             = \$dir/ca.crt
private_key             = \$dir/ca.key
default_days            = 365
default_crl_days        = 30
default_md              = md5
preserve                = no
policy                  = policy_anything
[ policy_anything ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
EOT

#  sign the certificate
echo "CA signing: $CSR -> $CERT:"
/usr/local/ssl/bin/openssl ca -config ca.config -out $CERT -infiles $CSR
echo "CA verifying: $CERT <-> CA cert"
/usr/local/ssl/bin/openssl verify -CAfile ca.crt $CERT

#  cleanup after SSLeay
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old

#  die gracefully
exit 0

Danach:
./sign.sh server.csr

Wichtige Dateien: server.key und server.crt
Diese in die Verzeichnisse /usr/local/httpd/conf/ssl.crt und ssl.key
kopieren. Mit /usr/local/httpd/bin/apachectl startssl starten!


Mehr Informationen über die Mailingliste Postfixbuch-users