PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Erstellen von Zertifikaten mit openssl



Schniedelzwerg
13.07.10, 08:11
Hallo,

ich habe ein Problem beim Erstellen von Zertifikaten mit openssl. Ich habe einen Freeradiusserver aufgesetzt auf einem 010 i686 GNU/Linux
Ubuntu 10.04 LTS und mich an folgende Anleitung gehalten: http://wiki.freeradius.org/FreeRADIUS_Active_Directory_Integration_HOWTO

Zum Erstellen der Zertifikate wird beim Freeradius folgendes Script mitgeliefert:


#!/bin/sh -x


SSL=/usr/lib/ssl

export PATH=${SSL}/bin/:${SSL}/ssl/misc:${PATH}

export LD_LIBRARY_PATH=${SSL}/lib

rm -rf demoCA roo* cert* *.pem *.der


openssl req -new -x509 -keyout newreq.pem -out newreq.pem -days 730 -passin pass:whatever -passout pass:whatever


echo "newreq.pem" | /usr/lib/ssl/misc/CA.pl -newca

#ls -lg demoCA/private/cakey.pem

openssl pkcs12 -export -in demoCA/cacert.pem -inkey newreq.pem -out root.p12 -cacerts -passin pass:whatever -passout pass:whatever
openssl pkcs12 -in root.p12 -out root.pem -passin pass:whatever -passout pass:whatever
openssl x509 -inform PEM -outform DER -in root.pem -out root.der


openssl req -new -keyout newreq.pem -out newreq.pem -days 730 -passin pass:whatever -passout pass:whatever
openssl ca -policy policy_anything -out newcert.pem -passin pass:whatever -key whatever -extensions xpclient_ext -extfile xpextensions -infiles newreq.pem

openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-clt.p12 -clcerts -passin pass:whatever -passout pass:whatever
openssl pkcs12 -in cert-clt.p12 -out cert-clt.pem -passin pass:whatever -passout pass:whatever
openssl x509 -inform PEM -outform DER -in cert-clt.pem -out cert-clt.der


openssl req -new -keyout newreq.pem -out newreq.pem -days 730 -passin pass:whatever -passout pass:whatever
openssl ca -policy policy_anything -out newcert.pem -passin pass:whatever -key whatever -extensions xpserver_ext -extfile xpextensions -infiles newreq.pem

openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-srv.p12 -clcerts -passin pass:whatever -passout pass:whatever
openssl pkcs12 -in cert-srv.p12 -out cert-srv.pem -passin pass:whatever -passout pass:whatever
openssl x509 -inform PEM -outform DER -in cert-srv.pem -out cert-srv.der


Es handelt sich bei opensll um Version 0.9.8.k
OpenSSL> version
OpenSSL 0.9.8k 25 Mar 2009
OpenSSL> exit


Es kommt an folgender Stelle zu einem Fehler
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out cert-clt.p12 -clcerts -passin pass:whatever -passout pass:whatever
No certificate matches private key
+ openssl pkcs12 -in cert-clt.p12 -out cert-clt.pem -passin pass:whatever -passout pass:whatever
3107:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:150:
+ openssl x509 -inform PEM -outform DER -in cert-clt.pem -out cert-clt.der
unable to load certificate
3108:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE


Hat jemand von Euch diese Problem auch schon gehabt und kann mir einen Tipp geben? Vielen Dank!

hessijens
13.07.10, 10:01
Das Howto bezieht sich auf eine frühere Version von openssl. Neuere Versionen haben neben der newreq.pem nun den Schlüssel gesondert in der Datei newkey.pem. Ersetze "-inkey newreq.pem" durch "-inkey newkey.pem", dann sollte es gehen.

Schniedelzwerg
14.07.10, 09:03
Hallo,

der Schlüssel wird eigentlich durch


echo "newreq.pem" | /usr/lib/ssl/misc/CA.pl -newca

in die richtige Datei geschrieben.

Egal, ich habe jedenfalls das Problem behoben. Dazu mussten einige Änderungen im CA.pl Script vorgenommen werden. An der Stelle

if ( "$NEW" || ! -f "${CATOP}/serial" ) {
# create the directory hierarchy
mkdir $CATOP, $DIRMODE;
mkdir "${CATOP}/certs", $DIRMODE;
mkdir "${CATOP}/crl", $DIRMODE ;
mkdir "${CATOP}/newcerts", $DIRMODE;
mkdir "${CATOP}/private", $DIRMODE;
open OUT, ">${CATOP}/index.txt";
close OUT;
open OUT, ">${CATOP}/crlnumber";
print OUT "01\n";
close OUT;


musste folgende Änderung vorgenommen werden, sodass der Code an der Stelle folgend aussieht:


if ( "$NEW" || ! -f "${CATOP}/serial" ) {
# create the directory hierarchy
mkdir $CATOP, $DIRMODE;
mkdir "${CATOP}/certs", $DIRMODE;
mkdir "${CATOP}/crl", $DIRMODE ;
mkdir "${CATOP}/newcerts", $DIRMODE;
mkdir "${CATOP}/private", $DIRMODE;
open OUT, ">${CATOP}/index.txt";
close OUT;
open OUT, ">${CATOP}/crlnumber";
print OUT "01\n";
close OUT;
open OUT, ">${CATOP}/serial";
print OUT "03";
close OUT;


Als nächstes hatte ich noch den Fehler, dass die Zertifikate nicht den selben subject nutzen durften, sodass ich in der Datei /usr/lib/ssl/misc/demoCA/index.txt.attr den Wert unique_subject = no gesetzt habe.

Vielen Dank für Eure Mühe!