night review
This commit is contained in:
parent
1457d92ab9
commit
0855d45d54
98
HowtoSSL.md
98
HowtoSSL.md
|
@ -3,32 +3,33 @@ title: Howto SSL
|
||||||
categories: security web
|
categories: security web
|
||||||
...
|
...
|
||||||
|
|
||||||
SSL (Secure Sockets Layer) est un protocole de sécurisation des échanges réseau.
|
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é.
|
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).
|
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/>
|
<https://www.openssl.org/docs/>
|
||||||
|
|
||||||
## Gestion clé privée / certificat
|
## 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
|
$ 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 genrsa -out private.key 2048
|
||||||
$ openssl req -new -sha256 -key private.key -out demande.csr
|
$ 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é
|
### 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
|
### 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 :
|
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
|
### Changer le mot de passe d'une clé privée
|
||||||
|
|
||||||
Il suffit de répéter les 2 étapes ci-dessus :
|
Il suffit de répéter les 2 étapes ci-dessus :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
$ openssl rsa -in private.pem -out private.key
|
$ openssl rsa -in private.pem -out private.key
|
||||||
$ openssl rsa -in private.key -des3 -out private-new.pem
|
$ 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
|
$ 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 :
|
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/>
|
É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 : Let's Encrypt <https://letsencrypt.org/>
|
||||||
* 0 EUR/ an : StartSSL Free : <http://www.startssl.com/?app=1>
|
* 0 EUR/an : StartCom/StartSSL Free : <https://www.startssl.com/Support?v=1>
|
||||||
* 6 EUR/ an : Comodo PositiveSSL : <http://www.namecheap.com/ssl-certificates/comodo/positivessl-certificate.aspx>
|
* 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>
|
* 12 EUR/an : Gandi SSL standard : <http://www.gandi.net/ssl/standard#single>
|
||||||
* 99 EUR/ an : Thawte SSL123 : <http://www.thawte.fr/ssl/ssl123-ssl-certificates/>
|
* 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
|
Pour louer un certificat « wildcard » (pour une infinité de sous-domaines du type `*.example.com`) :
|
||||||
* 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/
|
* 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 :
|
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 :
|
Pour louer un certificat EV :
|
||||||
|
|
||||||
* Gandi
|
* 249 EUR/an : Thawte SSL Web Server avec EV : <https://www.thawte.fr/ssl/extended-validation-ssl-certificates/>
|
||||||
* Thawte
|
|
||||||
|
|
||||||
### À 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
|
* 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...)
|
* 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é
|
* 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)
|
* 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
|
### À 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
|
## Sécurité et qualité des certificats
|
||||||
|
|
||||||
Faille
|
### Failles de sécurité
|
||||||
Apache
|
|
||||||
Nginx
|
TODO
|
||||||
A+ sur SSL LABS
|
|
||||||
|
#### Faille PODDLE
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
#### Faille FREAK
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
### Avoir A+ sur SSL LABS
|
||||||
|
|
||||||
|
#### Configuration Apache
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
#### Configuration Nginx
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
## FAQ
|
## 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…
|
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 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).
|
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>
|
||||||
<https://lut.im/EPSYOXoy/ckEgJEwU
|
|
||||||
|
|
||||||
Une autre "astuce" est d'utiliser un autre navigateur…
|
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
|
||||||
|
~~~
|
||||||
|
|
Loading…
Reference in a new issue