| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 28 avril 2021 - 15:54 |
Bonjour,
J'aurais voulu savoir s'il était possible de récupérer les informations sur le certificat SSL lors d'une HTTPRequête, notamment la date d'expiration et l'organisme fournisseur.
Le but est de pouvoir automatiser la surveillance de tout un set de domaines pour mieux anticiper les expirations.
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 891 messages Popularité : +227 (347 votes) |
|
Posté le 28 avril 2021 - 16:45 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 03 mai 2021 - 16:27 |
Bonjour,
Merci pour votre réponse, mais si je comprends bien la doc, ces fonctions servent à lire un certificat d'un poste local, pas le certificat lié à une connexion SSL vers un site externe.
Plus simplement, je cherche à obtenir les mêmes informations que lorsqu'on utilise un navigateur pour aller sur un site internet, et qu'on affiche les informations du certificat de ce site en cliquant sur le verrou à côté de l'URL. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 309 messages Popularité : +31 (37 votes) |
|
Posté le 03 mai 2021 - 17:45 |
Bonjour, Je ne crois pas qu'il existe de fonctions windev pour le certificat distant. Vous pouvez éventuellement passer par un script powershell qui .
- récupère le certificat - lit les informations - enregistre les informations dans un fichier texte - puis ouvrir ce fichier texte et le lire depuis windev
le script suivant effectue cela par exemple pour google.fr : (à copier coller dans une fenêtre powershell ou enregistrer dans un fichier avec extension .ps1)
$tcpclient = new-object System.Net.Sockets.tcpclient $hostname = 'www.google.fr' $port=443 $tcpclient.Connect($hostname,$port) $cert = $null $sslstream = new-object System.Net.Security.SslStream -ArgumentList $tcpclient.GetStream(),$false, {$true} $sslstream.AuthenticateAsClient($hostname) $cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]($sslstream.remotecertificate)
$cert | fl subject,*not*,Thumb*,ser* > c:\temp\test.txt
Bon dev. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 16 messages Popularité : +3 (3 votes) |
|
Posté le 10 mai 2021 - 17:25 |
Passer par un script PowerShell, c'est pas l'idéal ... mais ça fait bien le taf
Problème résolu. Merci pour votre aide ! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 12 mai 2021 - 17:28 |
Bonjour vu que windev peut integrer du c# vous pouvez le coder directement 1) A mettre dans le fichier CertificatSsl.cs et à importer dans le projet comme "Autre"
using System; using System.Collections; using System.Net; using System.Net.Sockets; using System.Net.Security; using System.Security.Authentication; using System.Text; using System.Security.Cryptography.X509Certificates; using System.IO;
namespace CERTIFICATSSL { PUBLIC static class Certificat { PRIVATE static string infos; PUBLIC static string GetSslCertificateInfos(string strDNSEntry) { infos = "NO ERROR"; X509Certificate2 cert = Null; using (TcpClient client = new TcpClient()) { client.Connect(strDNSEntry, 443); SslStream ssl = new SslStream(client.GetStream(), False, new RemoteCertificateValidationCallback(ValidateServerCertificate), Null); try { ssl.AuthenticateAsClient(strDNSEntry); } catch (AuthenticationException e) { infos = e.Message; ssl.Close(); client.Close(); RETURN infos; } catch (EXCEPTION e) { infos = e.Message; ssl.Close(); client.Close(); RETURN infos; } cert = new X509Certificate2(ssl.RemoteCertificate); infos = string.Format("Valid Date: {0}{1}", cert.NotBefore, Environment.NewLine); infos += string.Format("Expiry Date: {0}{1}", cert.NotAfter, Environment.NewLine); ssl.Close(); client.Close(); RETURN infos; } }
PUBLIC static bool ValidateServerCertificate(object sender, X509Certificate Certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { IF (sslPolicyErrors == SslPolicyErrors.None) RETURN True;
infos = string.Format("Certificate error: {0}", sslPolicyErrors); RETURN False; } } }
2) Fonction C# servant d'appel
PUBLIC static string getDateCerticatSsl(string ServeurName) { RETURN Certificat.GetSslCertificateInfos(ServeurName); }
3) Utilisation en wlangage [code:wl] Trace(getDateCerticatSsl("www.google.com")) [/code Donne : Valid Date: 13/04/2021 10:17:32 Expiry Date: 06/07/2021 10:17:31
-- «Nos clients sont nos meilleurs beta testeur.» H. Mintzberg «Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 13 mai 2021 - 18:13 |
Bonsoir Philippe, La commande "à importer dans le projet comme "Autre" n'est pas accessible via WD24 Je suppose qu'il faut disposer d'une version WD25 ou supérieur ? Bien Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 13 mai 2021 - 19:59 |
bonjour si ca existe en V24
-- «Nos clients sont nos meilleurs beta testeur.» H. Mintzberg «Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 13 mai 2021 - 20:09 |
petit oubli "clic droit" dessus "Autres" et choisir le fichier |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 14 mai 2021 - 07:50 |
Bonjour Philippe Merci pour ton aide Bien cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 14 mai 2021 - 08:20 |
Bonjour Philippe Après ajout et compilation lors du test WD génère l'erreur suivante :
C'est assez étrange ... Bien Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 14 mai 2021 - 15:38 |
bonjour avez vous bien <public static class Certificat> dans le fichier source (je crois que c'est case sensitif)
-- «Nos clients sont nos meilleurs beta testeur.» H. Mintzberg «Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 14 mai 2021 - 17:36 |
avez vous copiez la dll générée par la compilation <repertoire de l'exe>\<Nom du projet>.dll dans "C:\Program Files (x86)\PC SOFT\WINDEV24\Programmes\Framework\Win64x86\"
-- «Nos clients sont nos meilleurs beta testeur.» H. Mintzberg «Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 14 mai 2021 - 18:11 |
Bonsoir Philippe
J'ai fait un copier coller du code
WD ne me génère pas de dll car il y a une erreur de compilation "Le nom 'Certificat' n'existe pas dans le contexte actuel"
Je suis en WD et n'est pas en WB, je pense que le problème vient de là
Le but étant d'essayer d'importer une classe C# dans WD
Bien Cordialement |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 14 mai 2021 - 19:19 |
je suis en windev24 pas en webdev
-- «Nos clients sont nos meilleurs beta testeur.» H. Mintzberg «Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer |
| |
| |
| | | |
|
| | |