Comme la majorité des personnes travaillant dans l’IT, j’utilise un agrégateur de flux afin de rester à jour des actualités.
N’ayant pas l’envie de confier mes informations à un tiers, j’héberge ça sur une instance de TinyTiny Rss. Malgré tout le bien que je pense de ce logiciel, je n’aime pas l’interface de consultation web et me suis donc tourné vers un logiciel desktop pour cet usage.
Étant sur Mac Os X mon choix s’est tourné vers MicroRss.
Après avoir paramétré MicroRss et récupéré mes flux, un problème persistait :

MicroRss-Self-Cert-1

Utilisant un certificat auto signé, le logiciel me retournait une erreur. Même en ayant coché la case dans les préférences acceptant le certificat auto signé le problème persistait.

Et la solution est toute simple, il suffit d’injecter le certificat dans votre key-chain, changer la politique SSL à Trust pour que le message n’apparaisse plus :

MicroRss-Self-Cert-2

 

Lors de l’utilisation d’un service web tel que Apache, il est intéressant de fournir le service de façon sécurisé même au sein de l’entreprise, ne serais-ce que pour éviter la transmission des mots de passe en clair sur le réseau.

Lors de mes différentes interventions, je vois souvent la mise en place d’un certificat auto-signé  affichant dans le navigateur un message d’avertissement effrayant auprès des utilisateurs. Hors dans la majorité des cas, les postes clients sont des machines Windows intégré à un annuaire Active Directory, grâce à cela il est possible de pousser des certificats par GPO. Mais ce n’est pas le plus élégant; en effet depuis des années Microsoft fourni une PKI intégré directement dans l’Active Directory. Chacun des postes intégré à l’AD dispose dans son magasin de certificat la CA root de l’entreprise.
Et c’est sur cette base que nous allons créer une certificat qui sera reconnu par les navigateurs (enfin la Internet Explorer car le magasin de certificat windows n’est utilisé que par IE).

Le scénario est le suivant :

  • ActiveDirectory 2008 R2 incluant la PKI
  • Un client Windows 2008 R2 intégré au domaine (j’avais que ça sous le coude)
  • Serveur Web apache2 sous CentOS 6.4 et OpenSSL (la version non troué :p )

Cette procédure est effectué sur une CentOS, mais je suis certain que cela fonctionne sur d’autres distributions

On commence par créer la clef privé du serveur :

centOS# openssl genrsa 2048 > /etc/pki/tls/private/apache.domain.tld.key

Puis on génère la requête :

centOS# openssl req -new -key /etc/pki/tls/private/apache.domain.tld.key > /etc/pki/tls/private/apache.domain.tld.req
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [XX]:FR
 State or Province Name (full name) []:IDF
 Locality Name (eg, city) [Default City]:Paris
 Organization Name (eg, company) [Default Company Ltd]:Les Titans
 Organizational Unit Name (eg, section) []:
 Common Name (eg, your name or your server's hostname) []:apache.domain.tld
 Email Address []:admin@domain.tld
Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:

Une fois le fichier de requête transféré au serveur Windows, on va demander à la CA de créer un certificat via la mmc dédié :

Apache-MPKI-01

Apache-MPKI-02

Mais pourquoi cela ne fonctionne pas ?

La solution est simple,la PKI de Microsoft ne sais pas sur quel template SSL il doit s’appuyer pour créer le certificat et comme vous êtes des barbus, vous n’avez pas installé l’interface IIS pour gérer les certificats (sinon il faut copier-coller la demande sur le site web et roule ma poule)

Il ne nous reste plus qu’a sortir la ligne de commande windows et :

windows# certreq -submit -attrib "CertificateTemplate:WebServer" apache.domain.tld.req

Apache-MPKI-03

Grâce a cette commande, le système nous proposer de sauvegarder le certificat signé par la PKI. Il faut savoir que je m’appuie sur le template web standard où la validité du certificat est limité à 2 ans…

Il ne reste plus qu’a l’intégrer dans votre serveur apache :

vim /etc/httpd/conf.d/ssl.conf (ou autre fichier pour votre site web)

SSLCertificateFile /etc/pki/tls/private/apache.domain.tld.crt <= notre certificat
SSLCertificateKeyFile /etc/pki/tls/private/apache.domain.tld.key

Enfin pour tester on lance son navigateur web depuis  le client on va sur l’url de notre site web et on oh miracle :

Apache-MPKI-05

Références :

– https://dusk1911.wordpress.com/2012/07/10/issuing-exchange-certificate-from-ca-without-gui-and-getting-denied-by-policy-module-0x80094801/