s_curit

SSL et Serveur Web

Authentification du client SSL par certificat numérique :

Dans la majorité des cas, l'utilisateur authentifie le serveur TLS sur lequel il se connecte. Cette authentification est réalisée par l'utilisation d'un certificat numérique X.509 délivré par une autorité de certification (AC). Mais de plus en plus d'applications web utilisent maintenant l'authentification du poste client en exploitant TLS. Il est alors possible d'offrir une authentification mutuelle entre le client et le serveur. Le certificat client peut être stocké en format logiciel sur le poste client ou au format matériel (carte à puce, token USB) pour augmenter la sécurité du lien TLS. Cette solution permet d'offrir des mécanismes d'authentification forte

Les certificats SSL permettent notamment de sécuriser l’accès aux serveurs web. Pour ne pas provoquer d’alerte de sécurité dans les navigateurs, chaque certificat SSL doit être signé par une autorité reconnue par le navigateur.

C'est une solution pour éviter le message : 'Le certificat de sécurité de ce site Web présente un problème Le certificat de sécurité présenté par ce site Web n’a pas été émis par une autorité de certification approuvée'

Votre certificat SSL de sécurité vous permet de garantir à vos utilisateurs que les données de votre site sont bien celles de votre site et que les transmissions de données entre eux et le site sont cryptées et ne peuvent donc être interceptées.

Généralement, ces autorités facturent donc la délivrance d’un certificat. Il existe des sociétés qui offre gratuitement des certificats:

http://www.cacert.org

Obtenir une signature de certificat (CSR)

S'inscrire sur le site www.cacert.org

  • Executer les taches suivantes :
$ su root
$ mkdir ~/cacert # creer un repertoire 
$ cd ~/cacert 
  • Creer un fichier cacert_csr_request dans ce repertoire
#!/usr/bin/perl
 
use strict;
use esmith::util;
use esmith::ConfigDB;
use esmith::DomainsDB;
 
my $config   = esmith::ConfigDB->open;
my $domainsdb = esmith::DomainsDB->open_ro;
 
my $domain = $config->get('DomainName')->value;
my %domain_names = map { $_->{key} => 1 } grep { $_->key ne $domain } $domainsdb->domains;
 
my @domains = ($domain, keys %domain_names);
 
open(CONFIG, ">$domains[0].config") or die "Can't open openssl config file: $!";
print CONFIG "HOME = .\nRANDFILE = \$ENV::HOME/.rnd\n\n";
print CONFIG "[ req ]\ndefault_bits = 1024\ndistinguished_name = req_distinguished_name\n";
print CONFIG "req_extensions = v3_req\nprompt = no\n\n";
print CONFIG "[ req_distinguished_name ]\nCN = $domains[0]\n\n";
print CONFIG "[ v3_req ]\nbasicConstraints = CA:FALSE\nkeyUsage = nonRepudiation,digitalSignature,keyEncipherment\n";
print CONFIG "subjectAltName = critical,", join ",", map { "DNS:$_,DNS:*.$_" } @domains;
print CONFIG "\n";
close(CONFIG) or die "Closing openssl config file reported: $!";
 
unless ( -f "$domains[0].key" )
{
    open(KEY, ">$domains[0].key") or die "Can't open key file: $!";
    unless (open(SSL,"-|"))
    {
        exec("/usr/bin/openssl",
            qw(genrsa -rand),
            join(':',
            qw(
                /proc/apm
                /proc/cpuinfo
                /proc/dma
                /proc/filesystems
                /proc/interrupts
                /proc/ioports
                /proc/bus/pci/devices
                /proc/rtc
                /proc/uptime
                )),
            '1024')
            || die "can't exec program: $!";
    }
    while (<SSL>)
    {
        print KEY $_;
    }
    close(SSL) or die "Closing openssl pipe reported: $!";
    close(KEY) or die "Closing key file reported: $!";
}
 
open(CSR, ">$domains[0].csr") or die "Can't open csr $!";
unless (open(SSL,"-|"))
{
    exec("/usr/bin/openssl",
        qw(req -config), "$domains[0].config",
        qw(-new -key), "$domains[0].key",
        qw(-days 730 -set_serial), time())
        || die "can't exec program: $!";
}
while (<SSL>)
{
    print CSR $_;
}
 
close(SSL) or die "Closing openssl pipe reported: $!";
close(CSR) or die "Closing csr file reported: $!"; 
  1. poursuivre par les taches suivantes :
$ chmod u+x cacert_csr_request # rendre le fichier executable
$ ./cacert_csr_request # executer le programme
$ cat {domain}.csr
** coller ici le contenu du "certificat de domaine" obtenu sur www.cacert.org ~/cacert/{domain}.crt
$ cp {domain}.crt /home/user/ssl.crt/{domain}.crt
$ cp {domain}.key /home/user/ssl.key/{domain}.key
$ config setprop modSSL crt /home/user/ssl.crt/{domain}.crt
$ config setprop modSSL key /home/user/ssl.key/{domain}.key
$ signal-event console-save

forums.ixus.fr

  • s_curit.txt
  • Dernière modification: 2018/10/13 14:59
  • (modification externe)