Bonjour,

Voilà mon problème : je souhaite vérifier un certificat SSL toutes les 2h, mon code pour vérifier le SSL fonctionne, le timer aussi, MAIS lorsque je fait tourner le programme, le timer se lance, la verif se fait une première fois, puis une seconde fois, mais ensuite celui-ci tourne dans le vent sans checker le SSL.

De plus, si le certificat n'est pas bon, j'obtiens bien le resultat attendu.

Voici mon code pour plus de précision :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public static void Main(string[] args)
		{
                        //CREATION DE MON TIMER
			TimerCallback callback = new TimerCallback(Tick);		
		  	Console.WriteLine("\n Creating timer: {0} \n", DateTime.Now.ToString("h:mm:ss"));
		  	Timer stateTimer = new Timer(callback, null, 0, 5000); //--> ici toutes les 5 secondes pour les testes
 
 
			Console.ReadKey(true);
		}
 
		static public void Tick(Object stateInfo)
		{
                        Console.WriteLine("appel de la fonction SSL . . .\n");
			ssl();
		}
 
		public static void ssl()
		{
			try
			{
				ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback;			
				var request = WebRequest.Create("https://exemple.com:443");				
				var response = request.GetResponse();
 
				Console.WriteLine("\n is ok \n");
 
			}
			catch
			{
				Console.WriteLine("\n is not ok \n");				
			}
		}
 
		//callback du SSL 
		private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate,
                                                            X509Chain chain, SslPolicyErrors sslPolicyErrors)
	    {
	    	string sN = certificate.GetSerialNumberString();
	    	string Iss = certificate.Issuer.ToString();
	    	string exp = certificate.GetExpirationDateString();
	    	string serialNumber ="XXXXXXXXXXXXXXXXXXXXXx";
			string issuer = "CN=XXXX  Standard SSL CA, O=XXXXXX SAS, C=XX";
			string expiration = "XX/XX/XXXX XX:XX:XX";
 
			if(sN != serialNumber || Iss != issuer || exp != expiration)
			{
				Console.WriteLine("probleme de certificat");
				return false;				
			}
	      	else
	      	{
	      		return true;
	      	}
 
	    }

Avec mes remerciement,
Leo