In einem Kundenprojekt benötigen wir SSL in einer Azure Websolle.
Dafür habe ich auf meinem Rechner ein Cert Request erstellt, diesen von Thawte signieren lassen und wieder bei mir abgeschlossen.
Damit habe ich bei mir ein gültiges SSL Cert in meinem Cert Store.
Dieses Cert habe ich nun, mit dem Zertifikats Snap-In der mmc, in eine pfx Datei exportiert und den Privaten Schlüssel mit exportiert.
Dieses pfx kann ich nun in der Azure Admin Konsole zu der Webrole hochladen.
Dann kann ich im Visual Studio noch ebenfals das Zertifikat mitgeben und dieser den https Endpunkt erlauben.
Dann wird das Ganze zu Azure deployed uns startet dann.
so weit, so gut.
Nun wurden aber letztes Jahr die Schlüssellängen von 1024 auf 2048 Bit verlängert, so dass der IIS neue Root Zertifikate braucht, um die Certs korrekt auszuliefern.
Jetzt also noch das neue Root Cert runtergeladen, und dann?
Das Root Cert muss in der Webrolle mittels eines Startup-Task installiert werden.
Dazu das Cert (z.B. “ssl123_pkcs7.cer”) in das Webroot des Projektes legen und noch im Webroot ein neues Script (z.B. Startup.cmd, wichtig: ANDI codierung benutzen!) anlegen mit “certutil -f -addstore root ssl123_pkcs7.cer”.
Beiden als Eigenschaft noch als “Eigenschaft “Copy to Output Directory: Copy always” geben und dieses dann neu deployen.
Ich habe dieses aus folgenden Seiten Zusammen gebastelt: http://blogs.msdn.com/b/avkashchauhan/archive/2011/05/27/how-to-add-certificate-in-your-azure-vm-using-startup-task.aspx http://blog.smarx.com/posts/introduction-to-windows-azure-startup-tasks http://msdn.microsoft.com/en-us/library/windowsazure/gg456327.aspx
4def1313-93e1-4d64-ae11-39ec977b7754|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
Wwnn Silverlight einen Webservice über SSL benutzen soll, müssen dazu folgende 3 Dinge beachtet werden: 1) eine clientaccesspolicy.xmlim Webroot haben: <?xml version="1.0" encoding="utf-8" ?>
2) eine crossdomain.xml im Webroot haben:
<?xml version="1.0"?>
3) im Silverlight:
ich benutze dazu meisst eine Statische Methode, die den Webservice erstellt, um die jeweilige URL vom System an die Umgebung anpassen zu können.
Public Shared Function GetWebservice() As BackendService.BackendServiceSoapClient
'--Detect Current URL
Dim Url As String = String.Format("{0}BackendService.asmx", Settings.RootURLAll)
Dim Binding As ServiceModel.BasicHttpBinding
If Settings.RootURLAll.IndexOf("https") > -1 Then
Binding = New ServiceModel.BasicHttpBinding(ServiceModel.BasicHttpSecurityMode.Transport) With {.MaxReceivedMessageSize = 5000 * 1024}
Else
Binding = New ServiceModel.BasicHttpBinding(ServiceModel.BasicHttpSecurityMode.None) With {.MaxReceivedMessageSize = 5000 * 1024}
End If
'--Create new Webservice Client
Dim Binding As New ServiceModel.BasicHttpBinding(ServiceModel.BasicHttpSecurityMode.Transport) With {.MaxReceivedMessageSize = 5000 * 1024}
Dim WS As New BackendService.BackendServiceSoapClient(Binding, New ServiceModel.EndpointAddress(Url))
Return WS
End Function
c2064139-ed45-4286-9fe1-e28306feee61|0|.0|27604f05-86ad-47ef-9e05-950bb762570c
Der neue FTP-Server für Windows 2008 kann ja nun endlich auch per SSL verschlüsselte Verbindungen. (Achtung: der Server ist nur als externer Download verfügbar. der standartmässtig mit Windows 2008 mitgelieferte FTP-Dienst kann kein SSL:
http://www.iis.net/downloads/
Damit man den Server aber auch benutzen kann, muss der Windows Firewall mittels dieser Kommandos mitgeteilt werden, dass der Server externe Verbindungen annehmen darf. Verbindungen sind dann NUR im Passive Mode möglich.
Nicht SSL Verbindungen erlauben:
netsh advfirewall firewall add rule name="FTP (no SSL)" action=allow protocol=TCP dir=in localport=21
Statefull Firewall aktivieren (der Server "merkt" sich, wenn eine Verbindung besteht:
netsh advfirewall set global StatefulFtp enable
Der FTP-Dienst hört nach aussen auf allen Ports (braucht man für Passive Transfers):
netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
Weitere Details gibts hier:
http://blogs.iis.net/jaroslad/
Und alle Befehle am Stück:
netsh advfirewall firewall add rule name="FTP (no SSL)" action=allow protocol=TCP dir=in localport=21
netsh advfirewall set global StatefulFtp enable
netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
54e277f6-e72b-470e-9dbf-dfe2a8fae0f6|2|5.0|27604f05-86ad-47ef-9e05-950bb762570c