IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

[D10.3] Comment gérer HTTPS dans un webservice (partie serveur) ?


Sujet :

Web & réseau Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 2 614
    Points : 6 147
    Points
    6 147
    Par défaut [D10.3] Comment gérer HTTPS dans un webservice (partie serveur) ?
    Comment gérer le HTTPS dans un webservice (partie serveur) ?

    On m'a mis sur un projet déjà écrit, dans lequel le HTTP fonctionne : quand je teste des appels avec postman, tout marche bien.
    On me demande de gérer le HTTPS.

    J'ai supposé qu'il fallait ajouter un TIdServerIOHandlerSSLOpenSSL, l'associer au TIdHTTPWebBrokerBridge, et paramétrer tout ça.
    J'ai mis les mêmes paramètres qu'ici : https://synaptica.info/en/2016/09/21...r-with-delphi/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
        LIOHandleSSL.SSLOptions.CertFile := FCertFile;        // <-- variable contenant le nom du fichier *.pem
        LIOHandleSSL.SSLOptions.RootCertFile := FRootCertFile;        // <-- variable contenant le nom du fichier *.pem
        LIOHandleSSL.SSLOptions.KeyFile := FKeyFile;        // <-- variable contenant le nom du fichier *.pem
        LIOHandleSSL.SSLOptions.Method := sslvSSLv23;
        LIOHandleSSL.SSLOptions.Mode := sslmBoth;
        LIOHandleSSL.SSLOptions.SSLVersions := [sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
        LIOHandleSSL.SSLOptions.VerifyDepth := 0;
        LIOHandleSSL.SSLOptions.VerifyMode := [sslvrfPeer];
        LIOHandleSSL.OnGetPassword := IOHandlerSSLOpenSSLGetPassword;
        LIOHandleSSL.OnVerifyPeer := IOHandlerSSLOpenSSLVerifyPeer;
        FServer.IOHandler := LIOHandleSSL;              // <-- FServer est le TIdHTTPWebBrokerBridge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TLoyaltyWebServiceSrv.IOHandlerSSLOpenSSLGetPassword(var APassword: String);
    begin
      APassword := 'monmdp';
    end;
     
    function TLoyaltyWebServiceSrv.IOHandlerSSLOpenSSLVerifyPeer(Certificate: TIdX509; AOk: Boolean; ADepth, AError: Integer): Boolean;
    begin
      if ADepth = 0 then
        Result := AOk
      else
        Result := True;
    end;
    Je me suis souvenu d'une précédente discussion (https://www.developpez.net/forums/d2...error-tidhttp/) et j'ai bien vérifié la présence des 2 DLL (libeay32.dll et ssleay32.dll) qui sont en version 1.0.2.17.
    J'ai bien le fichier certificat (*.pem) à côté de l'exe.

    Mais, quand j'appelle à partir de postman avec la même url, mais en remplaçant le HTTP par un HTTPS, j'obtiens ça :
    Le projet LoyaltyWebService.exe a déclenché la classe d'exception EIdOSSLAcceptError avec le message 'Erreur lors de l'acceptation de la connexion avec SSL.
    EOF : violation du protocole'.


    Qu'est ce que j'ai mal fait ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. Écrivez dans un français correct !!

    Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise
    OpenGL 2.1 - Oracle 10g - Interbase (7 - XE) - PostgreSQL 11.6

  2. #2
    Membre expérimenté
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 826
    Points : 1 717
    Points
    1 717
    Par défaut
    Bonjour,

    Question bête : est ce que le serveur a été configuré pour accepter le https ?

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 2 614
    Points : 6 147
    Points
    6 147
    Par défaut
    Citation Envoyé par free07 Voir le message
    Question bête : est ce que le serveur a été configuré pour accepter le https ?
    C'est à dire ?
    Il y a un paramétrage à faire dans un autre composant ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. Écrivez dans un français correct !!

    Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise
    OpenGL 2.1 - Oracle 10g - Interbase (7 - XE) - PostgreSQL 11.6

  4. #4
    Membre expérimenté
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 826
    Points : 1 717
    Points
    1 717
    Par défaut
    Je pense au niveau OS serveur et site, il y a longtemps on a eu un projet de passage de http à https pour des web service et il me semble qu'ils ont eu des config à faire ( et aussi intégrer les certificats ), c'était un serveur Windows.

    Ce n'est pas moi qui m'en suis occupé de la partie serveur.

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 119
    Points : 11 217
    Points
    11 217
    Par défaut
    Le port est 443 ?

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 108
    Points : 26 262
    Points
    26 262
    Par défaut
    alors personnellement j'utilise un composant comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    object SSL: TIdServerIOHandlerSSLOpenSSL
      SSLOptions.Method = sslvTLSv1_2
      SSLOptions.SSLVersions = [sslvTLSv1_2]
      SSLOptions.Mode = sslmUnassigned
      SSLOptions.VerifyMode = []
      SSLOptions.VerifyDepth = 0
      Left = 136
      Top = 160
    end
    sslvTLSv1_2 est la norme maintenant, tout le reste est déprécié (et éventuellement plus supporté par OpenSSL)

    d'ailleurs ta Method "sslvSSLv23" est probablement trop basse pour le navigateur

    ensuite pour la clé j'utilise soit un certificat autosigné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        // Self signed
          SSL.SSLOptions.RootCertFile := '..\keystore\root.crt';
          SSL.SSLOptions.CertFile := '..\keystore\public.crt';
          SSL.SSLOptions.KeyFile := '..\keystore\private.key';
    où root.crt est le certificat racine, public.crt le certificat public du domaine, et private.key sa clé privée

    sinon avec Let's Encrypt (et éventuellement mon composant DelphiACME) je fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          SSL.SSLOptions.RootCertFile := '';
          SSL.SSLOptions.CertFile := '..\keystore\domain.crt';
          SSL.SSLOptions.KeyFile := '..\keystore\domain.key';
    le root n'étant pas nécessaire vu que c'est Let's Encrypt, il est donc publique.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 2 614
    Points : 6 147
    Points
    6 147
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Le port est 443 ?
    Non, 8083 apparemment.

    Citation Envoyé par Paul TOTH Voir le message
    alors personnellement j'utilise un composant comme ceci
    ...
    ensuite pour la clé j'utilise soit un certificat autosigné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        // Self signed
          SSL.SSLOptions.RootCertFile := '..\keystore\root.crt';
          SSL.SSLOptions.CertFile := '..\keystore\public.crt';
          SSL.SSLOptions.KeyFile := '..\keystore\private.key';
    où root.crt est le certificat racine, public.crt le certificat public du domaine, et private.key sa clé privée
    Et je peux en trouver où ?
    Comment savoir si le fichier *.pem que j'ai est bien ou pas ?
    J'ai modifié mon code pour mettre les mêmes paramètres, mais ça ne change rien. Je suppose que ce serait mon fichier *.pem le pb ...


    Citation Envoyé par Paul TOTH Voir le message
    sinon avec Let's Encrypt
    J'ai trouvé cette page (https://letsencrypt.org/fr/getting-started/) qui semble conseiller d'aller là (https://certbot.eff.org/), mais je n'y comprend rien.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. Écrivez dans un français correct !!

    Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise
    OpenGL 2.1 - Oracle 10g - Interbase (7 - XE) - PostgreSQL 11.6

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 119
    Points : 11 217
    Points
    11 217
    Par défaut
    Citation Envoyé par Lung Voir le message
    Non, 8083 apparemment.
    Il y a eu des modifications au niveau de l'activation SSL/TLS dans TIdHTTPServer. Elle n'est maintenant automatique que sur le port 443. Pour d'autres ports, tu dois obligatoirement définir l'événement OnQuerySSLPort et les accepter.

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 108
    Points : 26 262
    Points
    26 262
    Par défaut
    alors un certificat logiciel c'est une paire de clé de sécurité, la clé privée est à conserver en lieu sûr sinon le certificat serait compromis.
    la clé publique elle est, comme son nom l'indique, publique.

    ces deux clés sont le principe de fonctionne de RSA: j'ai une clé privée qui me permet de chiffrer une informatique que seule la clé publique permettra de déchiffrer, et vis et versa.

    par exemple, dans une signature électronique, on calcule une somme SHA256 du document, et on chiffre cette valeur avec la clé privée. La clé publique permet de vérifier que la signature correspond bien au SHA256 du document, et que c'est donc bien ce certificat qui a été utilisé, et que le document n'a pas été altéré.

    et comment fait-on pour savoir que le certificat est officiel ? et bien il est lui même signé par un certificat racine. Si ce certificat racine n'est pas certifié, on a affaire a un certificat auto signé qui ne garanti rien, s'il est signé par un organisme accrédité pour délivrer des signatures électronique, c'est qu'on a une étape de vérification. Il existe plusieurs certificats, un certificat d'identité implique que l'organisme a réellement contrôlé l'identité de la personne qui a demandé son certificat (je l'ai fait il y a quelques années pour répondre à un marché public dématérialisé et j'ai effectivement présenté une pièce d'identité à une personne que j'ai rencontré avant d'obtenir mon certificat électronique).

    dans le cadre des sites Web Let's Encrypt ne garantie pas l'identité, mais demande simplement de placer un fichier spécifique sur le site web dont on veux certifier le nom. Si je veux créer un certificat pour le site https://monsiteWeb, Let's Encrypt demande de placer un fichier sur le site non sécurisé http://monsiteWeb afin de démontre qu'on est en capacité de le mettre à jour. Une fois cette vérification effectuée, ils signent le certificat qu'on leur soumet.

    voilà pour la théorie

    PEM, PFX, JKS, CRT ... ce sont des extensions de fichiers pour soit des certificats dans un format donné (binaire, base64, ...), soit des keystore (je sais pas comment on dit en français) qui peuvent contenir plusieurs certificats et des informations sur le certificat (nom de domaine associé etc...)

    Indy s'appuie sur OpenSSL pour lire les certificats, et OpenSSL peut être utilisé pour les générer.

    création d'une clé privée pour le certificat racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl genrsa -des3 -out root.key 4096
    il faut définir le mot de passe et on obtient le fichier root.key

    création du certificat racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl req -x509 -new -nodes -key root.key -sha256 -days 1024 -out root.crt
    le mot de passe précédent est réclamé et il faut définir les informations du certificat pour obtenir un ficheir root.crt

    création d'une clé privée pour le certificat du site web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl genrsa -out domain.key 2048
    idem que pour root.key (sans le -des3 pas de mot de passe)

    création d'une demande de signature
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl req -new -key domain.key -out domain.csr
    demande des infos

    signer le certificat avec la racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl x509 -req -in domain.csr -CA root.crt -CAkey root.key -CAcreateserial -out domain.crt -days 500 -sha256
    et voilà domain.key c'est le private.key de mon exemple, domain.csr domain.crt c'est le public.crt de mon exemple et root.key c'est le même

    Pour let's encrypt c'est le même principe sauf que la racine c'est eux...si ça t'intéresse tu peux tester le projet sur mon github, le composant est simplement limité à l'environnement de test de Let's Encrypt, pour un usage réel il faut acheter le composant ...ou regarder les solutions gratuites, elles sont simplement moins facile à comprendre et tu ne peux pas les inclure dans ton appli Delphi...le point le plus délicat est qu'il faut répondre à une requête HTTP de Let's Encrypt pour valider le certificat...sous Delphi c'est facile à faire, les différents outils proposent soit d'embarquer un serveur, soit de s'appuyer sur Apache ou IIS et c'est plus ou moins bien fait.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 2 614
    Points : 6 147
    Points
    6 147
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Il y a eu des modifications au niveau de l'activation SSL/TLS dans TIdHTTPServer. Elle n'est maintenant automatique que sur le port 443. Pour d'autres ports, tu dois obligatoirement définir l'événement OnQuerySSLPort et les accepter.
    C'est un TIdHTTPWebBrokerBridge et pas un TIdHTTPServer, mais je suppose que ça ne change rien.
    J'ai codé ça comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TLoyaltyWebServiceSrv.IdHTTPWebBrokerBridgeQuerySSLPort(APort: TIdPort; var VUseSSL: Boolean);
    begin
      VUseSSL := (APort = FServer.DefaultPort);      // <-- FServer = TIdHTTPWebBrokerBridge, et DefaultPort contient le port défini.
    end;

    Citation Envoyé par Paul TOTH Voir le message
    voilà pour la théorie
    Je pense avoir compris les grandes lignes (enfin j'espère ).

    Citation Envoyé par Paul TOTH Voir le message
    Indy s'appuie sur OpenSSL pour lire les certificats, et OpenSSL peut être utilisé pour les générer.
    Bon, j'ai trouvé OpenSSL, je l'ai téléchargé, et installé.

    Citation Envoyé par Paul TOTH Voir le message
    création d'une clé privée pour le certificat racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl genrsa -des3 -out root.key 4096
    il faut définir le mot de passe et on obtient le fichier root.key

    création du certificat racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl req -x509 -new -nodes -key root.key -sha256 -days 1024 -out root.crt
    le mot de passe précédent est réclamé et il faut définir les informations du certificat pour obtenir un ficheir root.crt

    création d'une clé privée pour le certificat du site web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl genrsa -out domain.key 2048
    idem que pour root.key (sans le -des3 pas de mot de passe)

    création d'une demande de signature
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl req -new -key domain.key -out domain.csr
    demande des infos

    signer le certificat avec la racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    openssl x509 -req -in domain.csr -CA root.crt -CAkey root.key -CAcreateserial -out domain.crt -days 500 -sha256
    J'ai suivis tes instructions, et j'ai obtenu 6 fichiers :
    root.key
    root.crt
    root.srl
    domain.key
    domain.csr
    domain.crt

    Pour tester, j'ai donné :
    - le fichier root.crt à la propriété LIOHandleSSL.SSLOptions.RootCertFile
    - le fichier domain.csr à la propriété LIOHandleSSL.SSLOptions.CertFile
    - le fichier domain.key à la propriété LIOHandleSSL.SSLOptions.KeyFile

    Et au démarrage du serveur, j'ai obtenu :
    Le projet LoyaltyWebService.exe a déclenché la classe d'exception EIdOSSLLoadingCertError avec le message 'Impossible de charger le certificat.
    error:0906D06C: PEM routines: PEM_read_bio:no start line'.


    J'ai essayé de remplacer le fichier domain.crt dans la propriété LIOHandleSSL.SSLOptions.CertFile, et là plus de plantage au démarrage.

    J'ai testé un appel depuis postman, et là même erreur qu'avant :
    Le projet LoyaltyWebService.exe a déclenché la classe d'exception EIdOSSLAcceptError avec le message 'Erreur lors de l'acceptation de la connexion avec SSL.
    EOF : violation du protocole'.


    Je pensais tenir le bon bout cette fois ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. Écrivez dans un français correct !!

    Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise
    OpenGL 2.1 - Oracle 10g - Interbase (7 - XE) - PostgreSQL 11.6

  11. #11
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    mai 2002
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2002
    Messages : 2 614
    Points : 6 147
    Points
    6 147
    Par défaut
    Et voici mon nouveau code d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        LIOHandleSSL := TIdServerIOHandlerSSLOpenSSL.Create(FServer);
        LIOHandleSSL.SSLOptions.Method := sslvTLSv1_2;
        LIOHandleSSL.SSLOptions.Mode := sslmUnassigned;
        LIOHandleSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];
        LIOHandleSSL.SSLOptions.VerifyDepth := 0;
        LIOHandleSSL.SSLOptions.VerifyMode := [];
        LIOHandleSSL.SSLOptions.RootCertFile := FRootCertFile;
        LIOHandleSSL.SSLOptions.CertFile := FCertFile;
        LIOHandleSSL.SSLOptions.KeyFile := FKeyFile;
        FServer.IOHandler := LIOHandleSSL;
        FServer.OnQuerySSLPort := IdHTTPWebBrokerBridgeQuerySSLPort;
    Des fois que je me sois raté quelque part ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. Écrivez dans un français correct !!

    Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise
    OpenGL 2.1 - Oracle 10g - Interbase (7 - XE) - PostgreSQL 11.6

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 108
    Points : 26 262
    Points
    26 262
    Par défaut
    c'est moi qui ai fait l'erreur

    le fichier domain.csr à la propriété LIOHandleSSL.SSLOptions.CertFile
    le CSR c'est la demande de certification, c'est le crt qu'il faut prendre

    je corrige dans mon message.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. la femme de ménage , comment elle fait dans la salle des serveurs
    Par mapmip dans le forum La taverne du Club : Humour et divers
    Réponses: 20
    Dernier message: 25/05/2020, 10h46
  2. Entête HTTP dans requête Webservice
    Par peijnoob dans le forum WinDev
    Réponses: 0
    Dernier message: 13/04/2012, 12h05
  3. [Delphi/WebService] Comment gérer une session HTTP (cookie) ?
    Par adrien_as dans le forum Web & réseau
    Réponses: 3
    Dernier message: 20/03/2009, 11h55
  4. Comment gérer le grec dans MySQL ?
    Par LadyArwen dans le forum Requêtes
    Réponses: 14
    Dernier message: 27/01/2005, 09h24
  5. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo