Bonjour,

J'ai un problème avec le support SSL des librairies FTP d'ASP.NET. Je fais mes tests avec FileZilla FTP Server, avec lequel j'ai créer un serveur FTP distant avec SSL. Lorsque la connexion s'établi, le processus gèle au Welcome Message.

Voici le code VB.NET:
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

  Public Function listeFichiers(ByVal serveurCible As String, _
                                ByVal identifiant As String, _
                                ByVal motDePasse As String) As Array
    Dim monResponseStream As Stream = Nothing
    Dim monStreamReader As StreamReader = Nothing
    Dim monResultat As Array = Nothing
    ' Instanciation de deux Uri qui vont contenir les chemins source et destination
    Dim monUriServeur As New System.Uri(serveurCible)
    ' Vérification de la validité de l'Uri du fichier sur le serveur FTP
    If Not (monUriServeur.Scheme = Uri.UriSchemeFtp) Then
      MessageBox.Show("L'Uri du serveur FTP n'est pas valide", _
                      "Une erreur est surevnue", _
                      MessageBoxButtons.OK, MessageBoxIcon.Warning)
      'Si Uri non valide, arrêt du listage
      Return monResultat
      Exit Function
    End If
    Try
      ' Création de la requête de récupération de la liste des fichiers
      Dim maRequeteListe As FtpWebRequest = CType(WebRequest.Create(monUriServeur), FtpWebRequest)
      maRequeteListe.Method = WebRequestMethods.Ftp.ListDirectoryDetails
      ' Vérification de la présence des identifiants d'un compte, si aucun alors
      ' la connexion se fait en mode anonyme
      If Not identifiant.Length = 0 Then
        Dim monCompteFtp As New NetworkCredential(identifiant, motDePasse)
        maRequeteListe.Credentials = monCompteFtp
      End If
      maRequeteListe.EnableSsl = True

      ' Récupération de la liste de fichiers
      Dim maResponseListe As FtpWebResponse = CType(maRequeteListe.GetResponse, FtpWebResponse)
      ' Placement du flux provenant du serveur dans un streamreader
      monStreamReader = New StreamReader(maResponseListe.GetResponseStream, Encoding.Default)
      ' Lecture du stream reader

(...)

      ' Gestion des exceptions
    Catch ex As UriFormatException
      MessageBox.Show(ex.Message)
    Catch ex As WebException
      MessageBox.Show(ex.Message)
    Finally
      ' Fermeture des différents flux utilisés
      If monResponseStream IsNot Nothing Then
        monResponseStream.Close()
      End If
      If monStreamReader IsNot Nothing Then
        monStreamReader.Close()
      End If
    End Try
    Return monResultat
  End Function
La connexion est possible sans SSL si j'ajuste le code et le serveur FTP. Mais malgré le fait que j'ai enabler le SSL, si je regarde le log FTP du serveur, il ne semble pas envoyer la commande "AUTH SSL" comme il devrait:

(000006) 2009-02-18 21:11:42 - (not logged in) (127.0.0.1)> Connected, sending welcome message...
(000006) 2009-02-18 21:11:42 - (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.30 beta
(000006) 2009-02-18 21:11:42 - (not logged in) (127.0.0.1)> 220-written by Tim Kosse (Tim.Kosse@gmx.de)
(000006) 2009-02-18 21:11:42 - (not logged in) (127.0.0.1)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000006) 2009-02-18 21:12:42 - (not logged in) (127.0.0.1)> 421 Login time exceeded. Closing control connection.


Le serveur FTP s'attend à avoir quelque chose et ASP.NET ne le lui fourni pas. Si je me log sur le serveur avec un client FTP, le log se comporte plutot comme ça:

(000007) 2009-02-18 21:22:06 - (not logged in) (127.0.0.1)> Connected, sending welcome message...
(000007) 2009-02-18 21:22:06 - (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.30 beta
(000007) 2009-02-18 21:22:06 - (not logged in) (127.0.0.1)> 220-written by Tim Kosse (Tim.Kosse@gmx.de)
(000007) 2009-02-18 21:22:06 - (not logged in) (127.0.0.1)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000007) 2009-02-18 21:22:07 - (not logged in) (127.0.0.1)> SSL connection established
(000007) 2009-02-18 21:22:07 - (not logged in) (127.0.0.1)> USER sa
(000007) 2009-02-18 21:22:07 - (not logged in) (127.0.0.1)> 331 Password required for sa
(000007) 2009-02-18 21:22:07 - (not logged in) (127.0.0.1)> PASS ********
(000007) 2009-02-18 21:22:07 - sa (127.0.0.1)> 230 Logged on


Es-ce que quelqu'un peu m'aiguiller vers une piste?
Merci