Sécurisation du réseau dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Septembre 2014
 
 

Configuration du proxy SSL au niveau du noyau de manière à utiliser le protocole SSL d'Apache 2.2 comme solution de repli

Dans cette procédure, vous configurez de toutes pièces un serveur Web Apache 2.2 et configurez le proxy SSL au niveau du noyau en tant que mécanisme de traitement de session SSL principal. Lorsque l'ensemble de chiffrements SSL proposé par le client n'inclut aucun chiffrement offert par le proxy SSL au niveau du noyau, le serveur Web Apache 2.2 sert de solution de repli. Cette procédure met en oeuvre le scénario complexe illustré à la Figure 3–2.

Avant de commencer

Vous devez prendre le rôle root. Pour plus d'informations, reportez-vous à la section A l’aide de vos droits administratifs attribués du manuel Sécurisation des utilisateurs et des processus dans Oracle Solaris 11.2 .

  1. Sur le serveur Apache 2.2, créez un certificat de clé destiné à être utilisé par le proxy SSL au niveau du noyau du serveur.
    1. Génération d'une demande de signature de certificat (CSR).

      La commande suivante génère une demande de signature de certificat et la clé privée qui lui est associée pour le proxy SSL au niveau du noyau :

      # cd /root
      # openssl req \
      > -x509 -new \
      > -subj "/C=CZ/ST=Prague region/L=Prague/CN=`hostname`" \
      > -newkey rsa:2048 -keyout webkey.pem \
      > -out webcert.pem
      Generating a 2048 bit RSA private key
      .+++
      ........+++
      writing new private key to 'webkey.pem'
      Enter PEM pass phrase: JohnnyCashIsCool
      Verifying - Enter PEM pass phrase:  JohnnyCashIsCool
      #
      # chmod 440 /root/webcert.pem ; chown root:webservd /root/webcert.pem

      Remarque -  La longueur minimale de clé RSA est de 2 048 pour être conforme à FIPS 140. Pour plus d'informations, reportez-vous à Using a FIPS 140 Enabled System in Oracle Solaris 11.2 .

      Pour plus d'informations, reportez-vous à la page de manuel openssl(5).

    2. Envoyez la demande de signature de certificat à votre autorité de certification (CA).
    3. Remplacez le fichier Webcert.pem par le certificat signé fourni par votre autorité de certification.
  2. Configurez le proxy SSL au niveau du noyau avec une phrase de passe et le certificat de clé publique/privée.
    1. Créez, enregistrez et protégez la phrase de passe.
      # echo "RefrigeratorsAreCool" > /root/kssl.pass
      # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass

      Remarque - Le nom d'hôte ne peut pas contenir d'espaces.
    2. Rassemblez le certificat de clé privée et le certificat de clé publique dans un seul fichier.
      # cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
    3. Configurez le proxy SSL au niveau du noyau avec le certificat de clé publique/privée et la phrase de passe.
      # ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
  3. Configurer le serveur Web afin qu'il pour le processus d'écoute reçoive les demandes des communications non chiffrées sur le port 8443.

    Modifiez la ligne Listen dans le fichier /etc/apache2/2.2/httpd.conf.

    # pfedit /etc/apache2/2.2/httpd.conf
    ...
    ## Listen 80
    Listen 8443
  4. Ajoutez le modèle de module SSL, ssl.conf, au répertoire de configuration Apache.
    # cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf

    Ce module ajoute l'écoute des connexions chiffrées sur le port 443.

  5. Activez le serveur Web pour déchiffrer la phrase de passe dans le fichier /root/kssl.pass.
    1. Créez un script shell qui lit le fichier kssl.pass.
      # pfedit /root/put-passphrase.sh
      #!/usr/bin/ksh -p
      ## Reads proxy SSL au niveau du noyau passphrase
      /usr/bin/cat /root/kssl.pass
    2. Définissez le script comme exécutable et protégez le fichier.
      # chmod 500 /root/put-passphrase.sh
      # chown webservd:webservd /root/put-passphrase.sh
    3. Modifiez le paramètre SSLPassPhraseDialog dans le fichier ssl.conf de manière à appeler ce script shell.
      # pfedit /etc/apache2/2.2/ssl.conf
      ...
      ## SSLPassPhraseDialog  builtin
      SSLPassPhraseDialog exec:/root/put-passphrase.sh
  6. Placez les certificats de clés publique et privée du serveur Web aux emplacements appropriés.

    Les valeurs des paramètres SSLCertificateFile et SSLCertificateKeyFile dans le fichier ssl.conf indiquent les emplacements et les noms attendus. Vous pouvez copier les certificats aux emplacements corrects ou créer des liens vers ces emplacements.

    # ln -s  /root/webcert.pem /etc/apache2/2.2/server.crtSSLCertificateFile default location
    # ln -s /root/webkey.pem /etc/apache2/2.2/server.keySSLCertificateKeyFile default location
  7. Activez le service Apache.
    # svcadm enable apache22
  8. (Facultatif)Vérifiez que les deux ports fonctionnent.

    Utilisez les commandes openssl s_client et kstat pour afficher les paquets.

    1. Utilisez un chiffrement qui est disponible au proxy SSL au niveau du noyau.
      # openssl s_client -cipher RC4-SHA -connect web-server:443

      Une augmentation de 1 du compteur kstatkssl_full_handshakes vérifie que la session SSL a été traitée par le proxy SSL au niveau du noyau.

      # kstat -m kssl -s kssl_full_handshakes
    2. Utilisez un chiffrement qui n'est pas disponible au proxy SSL au niveau du noyau.
      # openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443

      Une augmentation de 1 du compteur kstatkssl_fallback_connections vérifie que le paquet est arrivé mais que la session SSL a été traitée par le serveur Web Apache.

      # kstat -m kssl -s kssl_fallback_connections
Exemple 3-1  Configuration d'un serveur Web Apache 2.2 afin qu'il utilise le proxy SSL au niveau du noyau

La commande suivante permet de créer une instance de service pour le proxy SSL au niveau du noyau qui utilise le format de clé pem :

# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443