18
0
Fork 0

night review

This commit is contained in:
gcolpart 2016-10-21 00:33:21 +02:00
parent 1457d92ab9
commit 0855d45d54
1 changed files with 64 additions and 34 deletions

View File

@ -3,32 +3,33 @@ title: Howto SSL
categories: security web
...
SSL (Secure Sockets Layer) est un protocole de sécurisation des échanges réseau.
Cela se base sur un principe de clé privée et clé publique (certificat) signée par une autorité.
On parle désormais de SSL/TLS car les normes récentes ont renommé SSL en TLS (Transport Layer Security).
SSL (*Secure Sockets Layer*) est un protocole de sécurisation des échanges réseau.
Cela se base sur un principe de clé privée et clé publique (certificat) signée par une autorité de certification.
On parle désormais de **SSL/TLS** car les normes récentes ont renommé SSL en TLS (*Transport Layer Security*).
<https://www.openssl.org/docs/>
## Gestion clé privée / certificat
### Générer un .csr
### Générer une demande de certificat (CSR)
Pour générer une clé privée non chiffrée (private.key) et sa demande de certificat associé (demande.csr) à transmettre à une autorité de certification :
Pour générer une clée privée non chiffrée (private.key) et sa demande de certificat associé (demande.csr) à transmettre à une autorité de certification :
~~~
$ openssl req -newkey rsa:2048 -sha256 -nodes -keyout private.key -out demande.csr
~~~
À des fins "pédagogiques", on peut découper en 2 étapes, à savoir la génération de la clé privée (non chiffrée) et la demande de certificat :
À des fins pédagogiques, on peut découper la cette génération en 2 étapes, à savoir la génération de la clé privée et la demande de certificat :
~~~
$ openssl genrsa -out private.key 2048
$ openssl req -new -sha256 -key private.key -out demande.csr
~~~
Pour générer une demande de certificat à partir d'un certificat existant (certificate.crt) :
Pour générer une demande de certificat à partir d'un certificat existant (certificat.crt) :
~~~
$ openssl x509 -x509toreq -sha256 -in certificate.crt -out demande.csr -signkey private.key
$ openssl x509 -x509toreq -sha256 -in certificat.crt -out demande.csr -signkey private.key
~~~
### Générer un certificat auto-signé
@ -48,7 +49,7 @@ Note : sous Debian, pour regénérer le certificat *snakeoil* (certificat autog
### Générer un certificat multi-domaines avec subjectAltName
Un certificat avec **subjectAltName** permet d'ajouter des noms de domaine secondaires (*subjectAltName*) en plus du nom de domaine principal (*Common Name*), ce qui est supporté par 99.9% des navigateurs récents.
Un certificat avec **subjectAltName** permet d'ajouter des noms de domaine secondaires (*subjectAltName*) en plus du nom de domaine principal (*Common Name*), ce qui est supporté par 99.9% des navigateurs récents (mais cela coûte cher chez les autorités de certification).
Modifier une copie du fichier `/etc/ssl/openssl.cnf` avant de générer le certificat pour :
@ -88,6 +89,7 @@ Verifying - Enter PEM pass phrase:
### Changer le mot de passe d'une clé privée
Il suffit de répéter les 2 étapes ci-dessus :
~~~
$ openssl rsa -in private.pem -out private.key
$ openssl rsa -in private.key -des3 -out private-new.pem
@ -211,7 +213,7 @@ Pour un service en HTTPS avec l'option SNI qui permet d'envoyer un nom de domain
$ openssl s_client -CApath /etc/ssl/certs -servername ssl.example.com -connect 192.0.2.42:443
~~~
**Le certificat est conforme avec votre base locale de certificats CA si l'on obtient Verify return code: 0 (ok)**
**Le certificat est conforme avec votre base locale de certificats CA si vous obtenez `Verify return code: 0 (ok)` **
Si le code de retour est différent de 0, le certificat n'est pas conforme pour différentes raisons :
@ -237,37 +239,41 @@ D'autres outils également utiles :
État du marche en 2015 : <http://www.netcraft.com/internet-data-mining/ssl-survey/>
Pour louer un certificat lié à **UN** nom de domaine :
Pour louer un certificat lié à **UN** enregistrement DNS :
* 0 EUR/ an : Let's Encrypt <http://XXXX>
* 0 EUR/ an : StartSSL Free : <http://www.startssl.com/?app=1>
* 6 EUR/ an : Comodo PositiveSSL : <http://www.namecheap.com/ssl-certificates/comodo/positivessl-certificate.aspx>
* 12 EUR/ an : Gandi SSL standard : <http://www.gandi.net/ssl/standard>
* 99 EUR/ an : Thawte SSL123 : <http://www.thawte.fr/ssl/ssl123-ssl-certificates/>
* 0 EUR/an : Let's Encrypt <https://letsencrypt.org/>
* 0 EUR/an : StartCom/StartSSL Free : <https://www.startssl.com/Support?v=1>
* 8.20 EUR/an : Comodo PositiveSSL : <http://www.namecheap.com/ssl-certificates/comodo/positivessl-certificate.aspx>
* 12 EUR/an : Gandi SSL standard : <http://www.gandi.net/ssl/standard#single>
* 129 EUR/an : Thawte SSL123 : <http://www.thawte.fr/ssl/ssl123-ssl-certificates/>
* 65 EUR/ an : Comodo PositiveSSL : http://www.namecheap.com/ssl-certificates/comodo/positivessl-wildcard-certificate.aspx
* 120 EUR/ an : Gandi SSL standard : http://www.gandi.net/ssl/standard
* 449 eur/ an : Thawte SSL Wildcard : http://www.thawte.fr/ssl/wildcard-ssl-certificates/
Pour louer un certificat « wildcard » (pour une infinité de sous-domaines du type `*.example.com`) :
* 85.62 EUR/an : Comodo PositiveSSL : <http://www.namecheap.com/ssl-certificates/comodo/positivessl-wildcard-certificate.aspx>
* 120 EUR/an : Gandi SSL standard : <http://www.gandi.net/ssl/standard#wildcard>
* 449 EUR/an : Thawte SSL Web Server Wildcard : <http://www.thawte.fr/ssl/wildcard-ssl-certificates/>
Pour louer un certificat multi-domaines :
* Thawte
* 40 EUR/an (pour 3 enregistrements DNS) et jusqu'à 210 EUR/an (30 enregistrements DNS) : <https://www.gandi.net/ssl/standard#multi>
* 129 EUR + <99 EUR/an : Thawte SSL123 avec SAN : <http://www.thawte.fr/ssl/ssl123-ssl-certificates/>
Pour louer un certificat EV :
* Gandi
* Thawte
* 249 EUR/an : Thawte SSL Web Server avec EV : <https://www.thawte.fr/ssl/extended-validation-ssl-certificates/>
### À propos de StartSSL
### À propos de StartCom/StartSSL
Il faut noter que *StartSSL Free* est bien gratuit mais a plusieurs inconvénients :
Il faut noter que l'offre *StartStartSSL Free* de StartCom est bien gratuite mais il y a plusieurs inconvénients :
* suite à des problèmes (TODO: mettre liens) Firefox envisage de supprimer les certificats CA de StartSSL en XXXX (TODO: mettre date et liens de référence)
* StarCom/StartSSL a été [racheté en 2016 par l'autorité de certification chinoise WoSign](https://www.wosign.com/english/News/WoSign_completed_equity_investment_to_StartCom_CA.htm) qui [a de nombreux problèmes selon la fondation Mozilla](https://wiki.mozilla.org/CA:WoSign_Issues)... ce qui a pour conséquence que [Mozilla envisage de retirer les certificats CA de StartSSL](https://groups.google.com/forum/?nomobile=true#!topic/mozilla.dev.security.policy/BV5XyFJLnQM), notamment [Firefox 51 devrait bannir les certificats émis par StartCom/StartSSL à partir du 21 octobre 2016 !!](https://bugzilla.mozilla.org/show_bug.cgi?id=1311832)
* les certificats gratuits mentionnent les informations personnelles de la personne physique qui a créé le compte
* la gestion du renouvellement est lourde (votre compte expire tous les ans, et vous ne pouvez le renouveler que quelques jours avant...)
* vous pouvez créer uniquement des certificats liés à la personne physique qui a créé le compte (nom de domaine qui vous appartient personnellement ou appartient à votre société) : si vous créez plusieurs certificats pour le compte d'autres sociétés (vos clients par exemple) StartSSL finira pas rejeter vos demandes et vous devrez créer un compte pour chaque société
* la révocation d'un certificat est payante (environ 20 EUR)
* différents problèmes et bugs, voir FAQ
* différents problèmes et bugs, voir [#FAQ]()
L'avantage de StartSSL est que pour 150 EUR/an, vous pouvez obtenir la validation « Organization » (après une lourde procédure de vérifications) et créer ensuite une infinité de certificats Wildcard valables 3 ans.
### À propos de Let's Encrypt
@ -276,16 +282,33 @@ Il faut noter que *StartSSL Free* est bien gratuit mais a plusieurs inconvénien
## Sécurité et qualité des certificats
Faille
Apache
Nginx
A+ sur SSL LABS
### Failles de sécurité
TODO
#### Faille PODDLE
TODO
#### Faille FREAK
TODO
### Avoir A+ sur SSL LABS
#### Configuration Apache
TODO
#### Configuration Nginx
TODO
## FAQ
### Erreur "The OCSP server has no status for the certificate" avec nouveau certificat StartSSL
### Erreur "The OCSP server has no status for the certificate" avec StartSSL
Suite à la mise en place d'un certificat délivré par StartSSL, vous obtenez une erreur du type "An error occurred during a connection to ssl.example.com. The OCSP server has no status for the certificate. (Error code: sec_error_ocsp_unknown_cert) ?
Suite à la mise en place d'un nouveau certificat délivré par StartSSL, vous obtenez une erreur du type "An error occurred during a connection to ssl.example.com. The OCSP server has no status for the certificate. (Error code: sec_error_ocsp_unknown_cert) ?
StartSSL semble mettre entre 6 et 12h à propager ses nouveaux certificats sur son serveur OCSP. Il faut donc patienter…
@ -293,7 +316,14 @@ StartSSL semble mettre entre 6 et 12h à propager ses nouveaux certificats sur s
Il y a un bug avec l'interface d'administration StartSSL avec Firefox (Firefox embarque un mauvais certificat). Voir le bug report <https://bugzilla.mozilla.org/show_bug.cgi?id=1037080> et une solution temporaire : <https://forum.startcom.org/viewtopic.php?p=8204#p8204>
Il faut supprimer le certificat "StartCom? Certification Authority" de l'autorité StartCom de type "Securité personne" (Software Security Device) dans les préférences de Firefox (Avancée --> Certificat).
<https://lut.im/EPSYOXoy/ckEgJEwU
Il faut supprimer le certificat "StartCom? Certification Authority" de l'autorité StartCom de type "Securité personne" (Software Security Device) dans les préférences de Firefox (Avancée --> Certificat). Voir <https://lut.im/EPSYOXoy/ckEgJEwU>
Une autre "astuce" est d'utiliser un autre navigateur…
### Ajouter des certificats CA sous Debian
Afin d'ajouter des certificats CA il faut copier les fichiers .crt dans `/usr/local/share/ca-certificates/` puis exécuter :
~~~
# dpkg-reconfigure ca-certificates
~~~