Accueil > Informatique >  Technos >  











OpenSSL
        OpenSSL






















OpenSSL
        OpenSSL






















OpenSSL
        OpenSSL






















OpenSSL
        OpenSSL






















OpenSSL
        OpenSSL






















OpenSSL
        OpenSSL























Les composants côté client
    The client-side components


La page de requête
Pour mettre en oeuvre la page de requête du certificat, on peut utiliser deux pages distinctes pour couvrir les deux navigateurs principaux. Le choix qui a été fait ici, est celui d'une page unique. En effet, les deux pages ne différeraient que sur deux points :
    • le script de récupération des données (dans le cas où ces données sont saisies dans un formulaire)
    • la présence d'un contrôle Active-X pour Internet Explorer (ignoré par Netscape), ou d'une balise <KeyGen> pour Netscape (dont Internet Explorer ne tient aucun compte)
Les différents composants de la page de requête sont donc :
    • l a balise <KeyGen> que l'on peut camoufler dans une balise <DIV>,
    • le contrôle Active-X,
    • le formulaire de requête que l'on peut personnaliser avec des <INPUT> du type hidden,
    • le script de contrôle des données, d'invocation de l'Active-X et d'envoi du formulaire.
La balise <KeyGen> s'utilise comme suit. Attention à bien l'insérer à l'intérieur du formulaire :

					 
  <div style="visibility: hidden;">
  <KEYGEN NAME="SPKAC" CHALLENGE="CpbsVUeXIQzFmZz">
  </div>
  <script>
  document.GenReqForm.SPKAC.selectedIndex = 1;
  </script>				 
					 
Le contrôle Active-X s'insère n'importe tout dans le body en utilisant le code ci-dessous :

					 
  <object
      classid="clsid:43F8F289-7A20-11D0-8F06-00C04FC295E1"
      codebase="Xenroll.dll"
      id="Enroll">
  </object> 
					 
Le formulaire de requête est le suivant. Tout ou partie de ce formulaire peut être basculé en <INPUT> de type hidden. Attention, la balise <KeyGen> doit y être insérée.

					 
  <form method="POST" name="GenReqForm">		 
    <input name="NOM" value="">
    <input name="PRENOM" value="">
    <input name="emailAddress" value="">
    <input name="organizationalUnitName" value="">
    <input name="organizationName" value="">
    <input name="localityName" value="">
    <input name="stateOrProvinceName" value="">
    <input name="countryName" value="">
    <input type="hidden" name="REQENTRY">
  </form>
					 
Le script suivant permet de contrôler les données éventuellement saisies, d'invoquer le contrôle Active-X et d'envoyer le formulaire.

N.B. : Il est compatible IE 5+ et NS7.


    <script language="JavaScript" type='text/javascript'>
    <!--
    
    var all = document.all;
    var elbyid = document.getElementById;
    var opera = window.opera;
    
    var ie4 = (all && !elbyid && !opera) ? true : false;
    var ns4 = document.layers? true : false;
    var ie5 = (all && elbyid && !opera) ? true : false;
    var ns6 = (!all && elbyid )? true : false;
    
    var ns = ns4 || ns6;
    var ie =  ie4 || ie5;
    
		// Action du formulaire
    var formaction= "GenCertServlet";
    
    function GenReq ()
    {
  
    szName = "";
    test = true;
    // Récupération des données
    if (ie) {
      Nom = document.all.NOM.value;
      Prenom = document.all.PRENOM.value;
      Country = document.all.countryName.value;
      State = document.all.stateOrProvinceName.value;
      Locality = document.all.localityName.value;
      Orga = document.all.organizationName.value;
      Email = document.all.emailAddress.value;
      OrgaUnit = document.all.organizationalUnitName.value;
    } 
    if (ns) {
      Nom = document.GenReqForm.NOM.value;
      Prenom = document.GenReqForm.PRENOM.value;
      Country = document.GenReqForm.countryName.value;
      State = document.GenReqForm.stateOrProvinceName.value;
      Locality = document.GenReqForm.localityName.value;
      Orga = document.GenReqForm.organizationName.value;
      Email = document.GenReqForm.emailAddress.value;
      OrgaUnit = document.GenReqForm.organizationalUnitName.value;
    }
    // Vérification des données 
    if (Nom == "")
		{
          strAlert = strAlert + "Saisissez votre nom.\n";
          test = false;
    }
    if (Prenom == "")
    {
          strAlert = strAlert + "Saisissez votre prénom.\n";
          test = false;
    }
    if ((Nom != "")&&(Prenom != ""))
    {
          szName = "CN=" + Nom + " " + Prenom + strCert;
    }
    szName = szName + ", C=" + Country;
    szName = szName + ", ST=" + State;
    szName = szName + ", L=" + Locality;
    szName = szName + ", O=" + Orga;
    if (Email == "")
    {
          strMail = "Saisissez votre adresse e-mail.\n";
          strAlert = strAlert + strMail;
          test = false;
    }
    else
    {
          szName = szName + ", Email=" + Email;
    }
    // Traitement des données
    if (test) {
      if (!ns) {
          keysize = 1024;
          flags = 1;
          keyflags = (flags + (keysize*65536));
          Enroll.RequestStoreFlags = "&H10000";
          Enroll.GenKeyFlags = keyflags;
          Enroll.KeySpec = 1; 
          szData = Enroll.createPKCS10(szName, "");
          document.GenReqForm.REQENTRY.value = szData;
          document.GenReqForm.action = formaction;
          document.GenReqForm.submit();
      } else {
          document.GenReqForm.action = formaction;
          document.GenReqForm.submit();
      }
    } else {
      alert(strAlert);
    }
   }

    //-->
    
					 


La page d'installation sous Internet Explorer
Cette page est spécifique à Internet Explorer. Elle utilise le même contrôle Active-X que la page de requête. Il est rappelé pour mémoire dans une version de codebase légèrement différente. Les différents composants de cette page sont :
    • le contrôle Active-X,
    • le bouton qui déclenche l'installation du certificat,
    • le script qui procède à l'installation dans Internet Explorer.
Le premier composant est donc le contrôle Active-X.

					 
  <object
      classid="clsid:43F8F289-7A20-11D0-8F06-00C04FC295E1"
      CODEBASE="/CertControl/xenroll.cab#Version=5,131,2090,1"
      id=IControl>
  </object> 
					 
Le second composant de cette page est le bouton qui permet d'installer le certificat.

					 
  <img src='/img/installer_cert.gif' 
    style="cursor: hand;" 
    name="Certificate" 
    onClick="Download()">
					 
Pour finir, le dernier comosant est le script qui invoque le contrôle Active-X.

				
				
<script language='VBSCRIPT'>

sub Download() 
Dim result, Message
On Error Resume Next
szPKCS7 = "Insérer ici la chaîne"
szPKCS7 = szPKCS7 + "cryptée contenue dans le certificat"
if ("" = "WriteCertToCSP") then  
	IControl.WriteCertToCSP = TRUE
end if
  if "1.3.6.1.5.5.7.3.2" = "1.3.6.1.5.5.7.3.8" _
    or "1.3.6.1.5.5.7.3.2" = "1.3.6.1.5.5.7.3.3" then
      SPCFile = InputBox("Save the SPC file as:", "XENROLL") 
      IControl.SPCFileName = SPCFile       
  elseif "" = "SaveCertificate"  then
      SPCFile = InputBox("Save the Certificate as:", "XENROLL") 
      IControl.SPCFileName = SPCFile
	end if 
  IControl.AcceptPKCS7(szPKCS7)
  If err.Number = 0 Then
      Message = "Certificat installé!" 
      result = MsgBox (Message, 64, "Serveur de Certificat")
      window.location = "URL en cas de succès"
  Else
      Message = "Certificat non installé:" & vbcrlf & vbcrlf 
      Message = Message & "Erreur: " & Hex(err)
      result = MsgBox (Message, 48, "XENROLL")  
      window.location = "URL en cas d'échec"
  End If    
end sub 
</script>
					 
La page d'installation sous Netscape
Cette page est spécifique à Netscape. La procédure lancée par le bouton d'installation procède en deux étapes :
    • d'abord, elle ouvre un popup avec un écran d'attente et un script qui ferme la fenêtre après quelques secondes,
    • puis, elle fixe la valeur de la propriété top.location.href à l'URL d'une servlet qui envoie le certificat en pièce jointe dans son flux de sortie ; cette servlet est détaillée dans le chapitre des composants côté serveur,

Retour au sommaire 3.- Les composants côté serveur