2015-12-28 11 views
1

Je complète les étapes 1-4 de this answer, qui ajoute mon certificat aux "Autorités de certification racines de confiance"> "Certificats", et le certificat est accordé <All> à des fins prévues. L'exécution du code PowerShell ci-dessous échoue avec The remote certificate is invalid according to the validation procedure lorsque $ftp_request.EnableSsl = $true. Il réussit quand $ftp_request.EnableSsl = $false.PowerShell - Certificat de confiance Windows n'authentifiant pas SSL sur FTP

$file_folder = "C:\Users\username\Desktop" 
$file_name = "test.txt" 
$file_path = "$file_folder\$file_name" 
$ftp_path = "ftp://127.0.0.1/$file_name" 

$username = "user" 
$pwd = "pass" 

# Create a FTPWebRequest object to handle the connection to the ftp server 
$ftp_request = [System.Net.FtpWebRequest]::Create($ftp_path) 

# set the request's network credentials for an authenticated connection 
$ftp_request.Credentials = 
    New-Object System.Net.NetworkCredential($username, $pwd) 

$ftp_request.UseBinary = $true 
$ftp_request.UsePassive = $true 
$ftp_request.KeepAlive = $false 

$ftp_request.EnableSsl = $true 

$ftp_request.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile 

$file_contents = Get-Content -en byte $file_path 
$ftp_request.ContentLength = $file_contents.Length 

$ftp_stream = $ftp_request.GetRequestStream() 
$ftp_stream.Write($file_contents, 0, $file_contents.Length) 
$ftp_stream.Close() 
$ftp_stream.Dispose() 

Je sais qu'il est possible de gérer manuellement en écrivant un gestionnaire à ServicePointManager.ServerCertificateValidationCallback, mais je voudrais avoir des certificats SSL gérés automatiquement par le gestionnaire de cert de Windows.

Répondre

0
$ftp_path = "ftp://127.0.0.1/$file_name" 

Ajout d'un certificat de confiance à toutes fins utiles ne signifie pas qu'un certificat est digne de confiance pour tous les hôtes. Le nom d'hôte que vous utilisez pour vous connecter doit toujours correspondre à l'objet du certificat. Et bien que vous ne fournissiez aucune information sur le certificat lui-même, je suppose que votre certificat n'est pas émis pour le sujet "127.0.0.1".