OpenSSL Zertifikat



  • Hallo ich möchte einen SSL Server programmieren. Dazu benötige ich ein Zertifikat und einen entsprechenden Private Key.

    Den Private Key habe ich nach folgender Anleitung erstellt (Punkt 2).

    http://www.openssl.org/docs/HOWTO/keys.txt

    openssl genrsa -out key.pem 1024
    

    Und das Zertifikat nach http://www.openssl.org/docs/HOWTO/certificates.txt Punkt 4 mit

    openssl req -new -x509 -key key.pem -out cacert.pem -days 1095
    

    Der Quellcode(C) zum laden von Privatekey und Zertifikat sieht so aus:

    SSL_CTX_use_certificate_file(connection.ssl_ctx_server,"cacert.pem",SSL_FILETYPE_PEM);
    SSL_CTX_use_PrivateKey_file(connection.ssl_ctx_server,"key.pem", SSL_FILETYPE_PEM);
    if (!SSL_CTX_check_private_key(connection.ssl_ctx_server))
    {
          LOG_MESSAGE("Zertifikat gehört nicht zum geladenen Private Key");
          exit(-1);
    }
    

    Tja leider kommt bei mir dann immer nur die Meldung "Zertifikat gehört nicht zum geladenen Private Key". Wenn da jemanden helfen kann, würde ich mich sehr freuen.



  • Die Keys sind offenbar korrekt, mit

    openssl s_server -cert cacert.pem -key privkey.pem -accept 40995
    habe ich testweise einen Server gestartet, und mit

    telnet -z ssl localhost 40995
    eine Verbindung aufgebaut. Das hat funktioniert!

    Nun kann nur noch mein C-Quelltext falsch sein, aber ich weis nicht was, hab hab es jetzt u.a. mit folgenden Funktionen ausprobiert

    * SSL_CTX_use_PrivateKey_file
    * SSL_CTX_use_RSAPrivateKey_file.
    und

    * SSL_CTX_use_certificate_chain_file
    * SSL_CTX_use_certificate_file.

    Das Ergebnis ist aber immer wieder dasselbe.
    Da komme ich einfach nicht weiter ... keiner da der was davon versteht?



  • So jetzt hab ich den Code noch etwas verbessert, und das Prog scheitert schon bei der 1. Bedingung

    if (!SSL_CTX_use_certificate_file(connection.ssl_ctx_server,"cacert.crt",SSL_FILETYPE_PEM))
    		{
    			LOG_MESSAGE("Konnte Zertifikat nicht laden");
    			exit(-1);
    		}
    
    		if (!SSL_CTX_use_PrivateKey_file(connection.ssl_ctx_server,"privkey.pem", SSL_FILETYPE_PEM)) {
    			LOG_MESSAGE("Konnte Privatekey nicht laden");
    			exit(-1);
    		}
    
    		if (!SSL_CTX_check_private_key(connection.ssl_ctx_server)) 
    		{
    			LOG_MESSAGE("Zertifikat gehört nicht zum geladenen Private Key");
    
    			exit(-1);
    		}
    

    Und kann das Zertifikat nicht laden, obwohl die Codierung stimmt(ich hab auch die andre probiert), Die Datei sich in dem Verzeichniss befindet. Das selbe Probl mit dem Private Key, wenn ich die Reihenfolge vertausche.

    Leserechte sind auch korrekt gesetzt.



  • Ok vergesst es, ich hab den Fehler ... hab vorher mein Arbeitsverzeichniss gewechselt, weil es ein Daemon Prozess werden soll ... so konnte es natürlich nicht funktionieren ... 😡


Anmelden zum Antworten