SSL-Zertifikat und Seriennummer bestimmen

Apache, Lighttpd, nginx, Cherokee
Post Reply
hace4
Posts: 9
Joined: 2004-01-08 07:30
 

SSL-Zertifikat und Seriennummer bestimmen

Post by hace4 »

hallo zusammen

ich scheitere zur zeit an dem problem, meinen selbst erstellten zertifikaten eine eigene seriennummer zu verpassen.
trotz zahlreicher kuschelstunden mit google und allermöglichen versuche, schaffe ich es nicht. es ist aber zwingend notwendig, weil mein browser zertifikate mit gleicher seriennummer verweigert.

zu den fakten:
suse 9.1

/etc/ssl/openssl.conf:
...
database = $dir/index.txt # database index file.
...
serial = $dir/serial # The current serial number
...


diese beiden dateien habe ich sogar per hand im ordner /etc/ssl erstellt.
anschließend habe ich per echo "01" > /etc/ssl/serial eine zahl eingetragen.

eigentlich sollte sich openssl die seriennummer aus serial holen und anschließend erhöhen. außerdem sollte es in index.txt das zertifikate eintragen.
macht es aber nicht. trotz mehrfacher versuche. die beiden dateien werden nicht angefasst.

kann mir jemand einen tip geben, was da falsch läuft?
eventuell kann man die seriennummer beim erstellen ja als parameter übergeben. aber weder mit man openssl noch bei openssl.org lässt sich da was finden.

schonmal danke im vorraus
hace4
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by Joe User »

hace4 wrote:weil mein browser zertifikate mit gleicher seriennummer verweigert.
Warum löscht Du nicht einfach das alte Zertifikat aus Deinem Browser?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
hace4
Posts: 9
Joined: 2004-01-08 07:30
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by hace4 »

:| würde ich ja gerne machen. aber bei mir besteht folgende problematik.
das existierente zertifikate im browser ist vom rootserver bei 1und1. es ist von mir mit der gleichen routine erstellt. das zertifikate welches ich zusätzlich reinnehmen möchte ist von unserem testserver hier im haus, auf welchem ich verschiedene tests mache, die ich auf dem produktivsystem nicht machen möchte. lösche ich jetzt das zertifikate vom prod komme ich zwar an den testserver ran aber nicht mehr an prod. und umgekehrt das gleiche spiel. außerdem wird es dann eng, wenn ich für die virtuellen hosts zertifikate erstelle.

mittlerweile habe ich im netz was gefunden
http://home.rhein-zeitung.de/~wwilhelm/starttls.shtml
wo ich zumindest schonmal die einträge in die serial und die index.txt hinbekomme.

mkdir /etc/ssl/crl /etc/ssl/newcerts

echo "01" > /etc/ssl/serial

cp /dev/null /etc/ssl/index.txt


in der openssl.conf habe ich noch den pfad korrigiert:
dir = ./ # Where everything is kept

openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 -config openssl.cnf
jetzt habe ich unter $dir/private ein cakey.pem und unter $dir ein cacert.pem

openssl genrsa -des3 -out servername.key 2048
nun existiert noch $dir/servername.key

openssl req -new -key servername.key -out servername.csr -days 365 -config openssl.cnf
damit kommt $dir/servername.csr hinzu

openssl ca -config openssl.cnf -policy policy_anything -in servername.csr -out servername.pem
nun auch noch die servername.pem

bis hierhin ist alles klar. was ich noch nicht geschafft habe, den apache mit den erstellten dateien zu ssl (ohne passortabfrage beim start) zu bewegen. irgendwie fehlt mir da der logische schluss, in meiner vhost_ssl.conf die richtigen einstellungen zu treffen. oder fehlt da noch ein zwischenschritt?

meine vhost_ssl.conf sieht übrigens so aus:

Code: Select all

<IfDefine SSL>
<IfDefine !NOSSL>

<VirtualHost *:443>

	#  General setup for the virtual host
	DocumentRoot "/srv/www/htdocs/https"
	#ServerName localhost:443
	ServerAdmin webmaster@lx904.com
	ErrorLog /var/log/apache2/ssl_error_log
	TransferLog /var/log/apache2/ssl_access_log

	SSLEngine on

	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

	SSLCertificateFile /etc/apache2/ssl.crt/lx904.crt

	SSLCertificateKeyFile /etc/apache2/ssl.key/lx904.key

	<Files ~ ".(cgi|shtml|phtml|php3?)$">
	    SSLOptions +StdEnvVars
	</Files>
	<Directory "/srv/www/cgi-bin">
	    SSLOptions +StdEnvVars
	</Directory>


	SetEnvIf User-Agent ".*MSIE.*" 
		 nokeepalive ssl-unclean-shutdown 
		 downgrade-1.0 force-response-1.0

	CustomLog /var/log/apache2/ssl_request_log   ssl_combined

</VirtualHost>
</IfDefine>
</IfDefine>
hace4
Posts: 9
Joined: 2004-01-08 07:30
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by hace4 »

:-D okay, ich konnte das problem jetzt über meinen alten weg lösen. habe beim ausführen auf der konsole einen hinweis auf einen parameter gefunden, der sich "set_serial" nennt.

für alle die das gleiche problem haben, hier mal das ganze im zusammenhang. ich beziehe mich dabei auf eine suse 9.1 minimalinstalation (ohne confixx oder plesk). die standardpfade der apache2-installation über yast wurden dabei nicht verändert.
die parameter -passout, -passin und -subj sorgen dafür, das nach befehlsübergabe an das system keine eingaben mehr nötig sind. damit lässt sich das ganze prima als script ausführen.

passwort: geheim
domain: http://www.domain.com
firma: cert gmbh

Code: Select all

openssl genrsa -des3 -out server.key -passout pass:geheim 1024

openssl rsa -in server.key -out server.key.unsecure -passin pass:geheim

openssl req -new -key server.key -out server.csr -passin pass:geheim -subj "/C=DE/ST=Bundesland/L=Stadt/O=cert gmbh/OU=IT-Department/CN=www.domain.com/emailAddress=webmaster@domain.com"

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -passin pass:geheim -set_serial 01

cp server.key.unsecure /etc/apache2/ssl.key/server.key

cp server.crt /etc/apache2/ssl.crt/server.crt

chmod 400 /etc/apache2/ssl.key/server.key

chmod 400 /etc/apache2/ssl.crt/server.crt
danach den apache neustarten
ps: da das passwort im klartext genannt wird, solltet ihr bei der konsoleneingabe hinterher besser die history löschen. ;-)
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by adjustman »

hace4 wrote:selbst erstellten zertifikaten eine eigene seriennummer zu verpassen
und wozu ist das gut? :roll:
hace4
Posts: 9
Joined: 2004-01-08 07:30
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by hace4 »

das problem liegt darin, das z.b. browser wie firefox die ssl-verbindung zu einer seite verweigern wenn sie bereits ein zertifikat mit der gleichen seriennummer akzeptiert haben - egal wo es herkommt. in meinem fall war das bei unserem prodserver bei 1und1 und unserem testserver hier im hause so. wer zuerst da war, hat den anderen blockiert. btw: die zertifikate sind für unterschiedliche domains erstellt worden.

erstellst du deine zertifikate, kriegen sie erstmal immer die nummer 00. egal auf welchem und für welchen server du das zertifikat erstellst. und das war mein problem.
das gleiche problem tritt wahrscheinlich auch auf, wenn du mehrere domains auf dem gleichen server hostest und für alle ein eigenes zertifikat erstellst.
adjustman
Posts: 1132
Joined: 2003-03-26 23:29
Location: SA
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by adjustman »

hace4 wrote:das gleiche problem tritt wahrscheinlich auch auf, wenn du mehrere domains auf dem gleichen server hostest und für alle ein eigenes zertifikat erstellst.
und du meinst, man kann für Domain A die Nummer 01 erstellen, für Domain B die 02, usw. Und dann klappt das?
hace4
Posts: 9
Joined: 2004-01-08 07:30
 

Re: SSL-Zertifikat und Seriennummer bestimmen

Post by hace4 »

ja, dann klappt es. nur läuft das ganze nach meinen nachforschungen hexadezimal ab. die nummer 26 wäre dann also "1A". aber das ist ja das geringste. :wink:
Post Reply