ungueltige Signatur fuer SSL-Zertifikat

bitmuncher

Senior-Nerd
Ich versuche hier gerade einem Webserver SSL beizubringen, nur will der Kleine nicht so wie ich. Das SSL-Zertifikat (self-signed) habe ich so erstellt, wie ich es sonst auch immer mache. Dazu fuehre ich folgende Schritte aus:

RSA Private Key erstellen:
Code:
openssl genrsa -des3 -out server.key 1024

CSR erstellen:
Code:
openssl req -new -key server.key -out server.csr

Private Key fuer das CA-Zertifikat erstellen:
Code:
openssl genrsa -des3 -out ca.key 1024

Self-Signed CA-Zertifikat erstellen:
Code:
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Danach nutze ich das Signcert-Skript von Ralf Engelschall - http://www.corserv.com/freebsd/signcert - um das Server-Zertifikat zu signieren:
Code:
signcert server.csr

Die Dateien server.crt und server.key nutze ich dann im Webserver, bei dem das VirtualHost fuer SSL wie folgt aussieht:

Code:
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/var/log/apache2/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/var/log/apache2/ssl_mutex
<VirtualHost *:443>
        DocumentRoot "/var/www"
        ServerName monitor1.meinedomain.tld:443
        ServerAdmin ich@meindomain.tld
        ErrorLog /var/log/apache2/error_log
        TransferLog /var/log/apache2/access_log
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /etc/apache2/ssl/server.crt
        SSLCertificateKeyFile /etc/apache2/ssl/server.key
        <Files ~ "\.(cgi|shtml|phtml|php3?)$">
            SSLOptions +StdEnvVars
        </Files>
        CustomLog /var/log/apache2/ssl_request_log \
                  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
        SetEnvIf User-Agent ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
</VirtualHost>

Soweit funktioniert das auch problemlos bei allen anderen Servern, nur bei diesem einen eben nicht.

Opera wirft mir beim Aufbau einer HTTPS-Verbindung folgenden Fehler aus:

You tried to access the address https://monitor1.meinedomain.tld/, which is currently unavailable. Please make sure that the Web address (URL) is correctly spelled and punctuated, then try reloading the page.

Secure connection: fatal error (554)

The signatures of this certificate could not be verified. While this can be caused by the issuer using the wrong method to sign the certificate, it can also be caused by attempts to modify or fake the certificate.

Firefox sagt mir:

Could not establish an encrypted connection because certificate presented by monitor1.meinedomain.tld has an invalid signature.

Nun stellt sich mir natuerlich die Frage, was hier falsch laeuft, denn diesen Ablauf hab ich eigentlich schon dutzende Male gemacht, nur bei diesem Server geht es nicht. Normalerweise fragen die Browser einfach nach ob ich das Zertifikat trotzdem akzeptieren will und gut ist, nur hier laesst sich garkeine Verbindung aufbauen. Hab ich irgendwas uebersehen oder sonst einen groben Schnitzer drin?
 
Hallo,
hmm, liegt dies evt. am Webserver?

Hast du mal ein funktionierendes SSL-Zertifikat verwendet von einem anderen Server? Wenn es dann klappt (mit entsprechenden Meldungen), weiß man immerhin, dass am Server nix kaputt ist.



PS:
Wobei man eigentlich deinen Script eigentlich gar nicht braucht, es reicht doch normalerweise:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

um sein Zertifikat selber zu unterschreiben, oder nicht?
 
Also ich erstelle meine Zertifikate auch immer so, und ich habe es eben nochmal durchgespielt -> klappt wunderbar...

Ich habe allerdings mit dem Apache 2.0.55 das Problem dass er SSL bei manchen VHosts aus unerklärlichen Grunden einfach nicht schluckt, und trotz https-Verbindung und entsprechenden Direktiven in der Config einfach im Plaintext überträgt...
Mit 2.2.3 hab bis jetzt keine Probleme...

Update eventuell mal deinen Apachen oder openssl.

MFG - Keks :)

PS: @Elderan: Ja :)


EDIT:

Ich erinnere mich wage daran, dass man für SSL NamedVhosts benötigt, und nicht <VirtualHost * : Port> schreiben darf, sondern ein expliziter Hostname / IP angegeben werden muss...
Versuch das mal :)
 
Also mit dem Zertifikat, das keksinat0r mir gerade geschickt hatte, funktioniert es. Es scheint also am Zertifikat zu liegen. Seltsamerweise bringt aber auch ein komplettes neuerstellen des Certs keine Abhilfe.

Apache ist übrigens in Version 2.2.3-4+etch1 und SSL in Version 0.9.8c-4 installiert. Ich werde mir jetzt mal ein Zertifikat auf einem Server erstellen, auf dem es schon funktioniert hat und melde mich dann wieder.

Zu den NamedVirtualHosts: Das würde garnicht funktionieren 2 verschiedene Ports in den NamedVirtualHosts zu nutzen. Daher muß des SSL-Vhost immer über den NamedVirtualHosts stehen, damit es sauber läuft.
 
Also meine Config läuft mit SSL und 2 verschiedenen Named V-Hosts -siehe https://keksinat0r.fumuga.com :)

Code:
[... standard-gedöns ...]
Listen 80
Listen 443

NameVirtualHost fumuga.com:80
NameVirtualHost fumuga.com:443

Include /etc/apache2/vhost/*.conf

<VirtualHost fumuga.com:80>
   ServerName fumuga.com
   ServerAlias *
   Redirect seeother / http://fumuga.com/
   php_admin_flag engine "Off"
</VirtualHost>
und dazu eine config aus /etc/apache2/vhost/:
Code:
<VirtualHost fumuga.com:443>

   ServerName  fumuga.com
   ServerAlias keksinat0r.fumuga.com
   ServerAdmin webmaster@fumuga.com

[... standard gedöns ...]

   SSLEngine             "On"
   SSLCertificateFile    "/etc/apache2/ssl/apache.pem"
   SSLCertificateKeyFile "/etc/apache2/ssl/apache.pem"

[... noch mehr standard gedöns ...]
</VirtualHost>


MFG - Keks :)
 
Ok, mit 2 NameVirtualHost-Direktiven hab ich es noch nicht probiert. Ich nutze (fast schon aus Gewohnheit) eher die Kombination

Code:
# Not-Named-VHost fuer SSL
<VirtualHost *:443>

</VirtualHost>

NameVirtualHost *:80

<VirtualHost *:80>
....
</VirtualHost>

Funktioniert auch ohne Probleme. :)

Edit: Also mit einem Zertifikat, das ich auf einem anderen Server erstelle (auch mit Etch und somit der gleichen SSL-Version) funktioniert es problemlos. Es bleibt also ein Rätsel warum ich auf diesem Server kein Zertifikat erstellen kann.

@Elderan: Das Skript sorgt dafür daß das CA-Zertifikat von mir genutzt wird und ich mir die Parameter nicht merken muß. ;)
 
Zurück
Oben