Catégorie: IIS

15/02/2010

Permalink 21:15:56, Catégories: Récapitulatif .NET, Récapitulatif, Web services, IIS, Certificat, 188 mots   French (FR) , nico-pyright(c)

[.NET] [IIS][Certificat] Utiliser OpenSSL pour créer un certificat .CER ou .PFX à partir du certificat public et de la clé privée

Vous avez recu un certicat sous la forme texte suivante ?

-----BEGIN CERTIFICATE-----
[...]Plein de chiffres et de lettres[...]
-----END CERTIFICATE-----

-----BEGIN RSA PRIVATE KEY-----
[...]Plein de chiffres et de lettres[...]
-----END RSA PRIVATE KEY-----

Il s'agit du format PEM
sauf que votre IIS attend un .PFX ou un .CER ...

Comment créer un certificat à partir de ce texte ?

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

29/01/2010

Permalink 20:11:00, Catégories: C#, Récapitulatif .NET, Récapitulatif, WCF, Web services, IIS, 705 mots   French (FR) , nico-pyright(c)

[.NET] [IIS][WCF] Quelques infos (difficilement) trouvées sur le net pour configurer IIS7 et déployer des Web services WCF

Après quelques jours à arracher les cheveux de mon navigateur préféré, voici quelques infos trouvées qui j'espère vous aideront en cas de difficultés à configurer IIS7 pour déployer des WebServices dans un environnement de production.

Une des premières choses est qu'on voit beaucoup de choses sur le net et dans les livres avec du localhost partout. Jamais de conditions réelles...

Comment fait-on alors quand on a une ip publique ? ou un nom de domaine ?

1) De ma maigre expérience, ca devient tout de suite plus facile avec un nom de domaine... Dans ce cas, il ne faut pas oublier de le renseigner dans les bindings du site :

image

2) Et si on doit faire de l'https ?

Ajoutons un binding https me direz vous ?

image

Oui, mais ce n'est pas suffisant.

On ne peut pas renseigner le nom du domaine ... Dans ce cas, il va falloir avoir recourt à une formule magique en ligne de commande :

   1: C:\Windows\System32\inetsrv>appcmd.exe set site /site.name:"MonSite" /+bindings.[protocol='https',bindingInformation='*:443:mon.domaine.com']

on devra ensuite ouvrir le fichier C:\Windows\System32\inetsrv\config\applicationHost.config et supprimer la ligne :

   1: <binding protocol="https" bindingInformation="*:443:" />

3) Si vous travaillez avec des certificats, n’oubliez pas d’accorder les droits adéquats à ceux-ci dans la console MMC : (manage private keys)

image

Il faut qu'ils correspondent au process défini dans la configuration avancée de l'application pool, disons NetworkService :

image

4) Si le wsdl génère le nom de la machine à la place du nom du domaine, normalement le binding avec nom de domaine défini au 1) suffit.

Si ca ne suffit pas, une solution est d’utiliser l’attribut factory du fichier svc et d’instancier un custom service host avec quelque chose du genre :

   1: <%@ ServiceHost Language="C#" Debug="true" Service="Service..." Factory="CustomHostFactory" %>
   1: public class CustomHostFactory : System.ServiceModel.Activation.ServiceHostFactory
   2: {
   3:     protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
   4:     {
   5:         CustomHost customServiceHost = new CustomHost(serviceType, baseAddresses);
   6:         return customServiceHost;
   7:     }
   8: }

   1: public class CustomHost : ServiceHost
   2: {
   3:     public CustomHost(Type serviceType, params Uri[] baseAddresses)
   4:  
   5:         : base(serviceType, GetBaseAddresses())
   6:     { }
   7:  
   8:  
   9:     private static Uri[] GetBaseAddresses()
  10:     {
  11:         List<Uri> addresses = new List<Uri>();
  12:         AddBaseAddress(addresses);
  13:         return addresses.ToArray();
  14:     }
  15:  
  16:     private static void AddBaseAddress(List<Uri> addresses)
  17:     {
  18:  
  19:         string address = "http://mon.domaine.com/MonService.svc";
  20:         addresses.Add(new Uri(address));
  21:     }
  22: }

Par contre, tout ceci ne fonctionnera correctement qu’avec le port 80 … En effet, avec un autre port, le wsdl généré contiendra le numéro de port. S’il est ouvert depuis l’extérieur, tout va bien …

5) Sinon, on se retrouve dans une configuration classique de déploiement.

Un client accède à un nom de domaine : http://mon.domaine.com, une translation NAT est faite pour aller sur une machine interne http://MaMachine, et redirigée vers un port précis : http://MaMachine:12345.

Un Web service est hébergé sur cette machine.

Dans ce cas, le wsdl généré contient des adresses avec le numéro de port, qui est bloqué. Qu’à cela ne tienne, on va définir explicitement que l’adresse du endpoint (dans le web config ou dans la factory) est l’adresse sans le numéro de port. Et là, une magnifique erreur, du genre :

No protocol binding matches the given address 'http://mon.domaine.com:12345/MonService.svc'. Protocol bindings are configured at the Site level in IIS or WAS configuration.

Pour résoudre ce bug, j’ai nommé le correctif : http://support.microsoft.com/kb/977420. Notez qu’il vous faudra installer le framework 3.5 SP1. (attention, différents correctifs existent en fonction des versions de son windows).

Et voilà pour ces quelques infos. En espérant que ca puisse vous aider.


Loin de moi l’idée de vous faire croire que je suis un expert IIS, au contraire. Je tiens à préciser que d’une manière générale, les informations sont plutôt difficile à trouver. Mais je tiens quand même à reconnaitre que les progrès entre IIS6 et IIS7 sont indéniables, rien que dans la gestion des utilisateurs …

Gageons que la prochaine version d’IIS sera encore plus complète.

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Blog de Nico-pyright(c)

Catégories


Rechercher

<  Avril 2012  >
Lun Mar Mer Jeu Ven Sam Dim
            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

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web