Simple TIdHttpServer Exemple en charge le protocole SSL

En espérant que quelqu'un peut me fournir un simple TIdHttpServer exemple qui prend en charge SSL. À l'aide de Delphi2007 et Indy10. J'ai le texte suivant pour créer/configurer le serveur et ioHandler:

ServerIOHandler := TIdServerIOHandlerSSLOpenSSL.Create(self);
ServerIOHandler.SSLOptions.CertFile := 'mycert.pem';
ServerIOHandler.SSLOptions.KeyFile := 'mycert.pem';
ServerIOHandler.SSLOptions.RootCertFile := 'mycert.pem';
ServerIOHandler.SSLOptions.Method := sslvSSLv23;
ServerIOHandler.SSLOptions.Mode := sslmServer;

ServerIOHandler.SSLOptions.VerifyDepth := 1;
ServerIOHandler.SSLOptions.VerifyMode := [sslvrfPeer,sslvrfFailIfNoPeerCert,sslvrfClientOnce];

IdHTTPServer1 := TIdHTTPServer.Create;
IdHTTPServer1.AutoStartSession := True;
IdHTTPServer1.SessionState := True;
IdHTTPServer1.OnCommandGet := IdHTTPServer1CommandGet;
idHttpServer1.ParseParams := True;
idHttpServer1.DefaultPort := 80;
idHttpServer1.IOHandler := ServerIOHandler;
IdHTTPServer1.Active := True;

mycert.pem a été créé à l'aide d'openssl avec cette commande:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

Tout de suite je pense qu'il ya quelque chose de mal parce que je suis en utilisant le même fichier pour CertFile, KeyFile, RootCertFile.

Je suis entré dans les blancs pour les invites à l'exception du nom commun. Que j'étais sûr de définir le nom de domaine, je suis en utilisant (disons, à titre d'hypothèse, il est myexample.com).

Dans un navigateur si j'ai frappé http://myexample.com résultats exception: Erreur d'accepter la connexion avec SSL. Frapper https://myexample.com ne se rend jamais à mon code.

30 janvier NOTE - j'ai utilisé sslbuddy pour générer les clés. Et cela n'a toujours pas de travail. J'ai commenté les lignes suivantes et il a travaillé:

ServerIOHandler.SSLOptions.VerifyDepth := 1;
ServerIOHandler.SSLOptions.VerifyMode := [sslvrfPeer,sslvrfFailIfNoPeerCert,sslvrfClientOnce];

OriginalL'auteur M Schenkel | 2011-12-27