Git Repositories

Commit Initial
[animeka-installation.git] / Animeka / Installation / SSL.txt
1 Content-Type: text/x-zim-wiki
2 Wiki-Format: zim 0.4
3 Creation-Date: 2013-06-26T23:47:47+02:00
4
5 ====== SSL ======
6 Created mercredi 26 juin 2013
7
8 ===== Installation : =====
9 Récupérer l'archive [[./sslmanager-1.2.tar.gz|sslmanager-1.2.tar.gz]]
10 Extraire dans [[/usr/local/pkissl/]]
11 Récupérer le CA et les anciennes clés, de l'archive [[./ssl-Animeka-2013.tar.xz|ssl-Animeka-2013.tar.xz]]
12 Le script sslmanager.sh requiert bash. Il ne fonctionnera sûrement pas avec dash ou zsh (en tout cas jusqu'à la version 1.2 du script).
13 Il faut donc s'assurer que bash est installé même si non-utilisé
14 uudecode est nécessaire, donc il faut installer le paquet sharutils :
15 '''
16 # apt-get install sharutils
17 '''
18
19
20 ===== Configuration : =====
21
22 ==== Installer le CA dans le système : ====
23 Normalement le certificat racine a déjà été créé et est valide jusqu'en 2023.
24 Si on veut en récréer un autre, voici la marche à suivre à partir d'un répertoire vide.
25
26 === Création du CA : ===
27 '''
28 # ./sslmanager.sh --init
29 Please fill the required informations for your CA :
30  [C]  City code on 2 letters [default: FR]: 
31  [ST] Your state or region [default: Rhone-Alpes]: 
32  [L]  Your city or location [default: Lyon]: 
33  [O]  Your organisation or company [default: My Company]: Animeka
34  [OU] Your unit organisation [default: -]: 
35  [CN] Your FQDN [default: my-domain.com]: animeka.com
36  [E]  Email [default: contact@my-domain.com]: contact@animeka.com
37 '''
38 Édition de ca_openssl.cnf pour modifier/ajouter :
39 '''
40 #nsCaRevocationUrl               = http://cert.animeka.com/ca.crl
41 keyUsage = digitalSignature,keyEncipherment
42 extendedKeyUsage = serverAuth
43 crlDistributionPoints = URI:http://cert.animeka.com/ca.crl
44 '''
45 Puis on demande la création du certificat sur 10 ans :
46 '''
47 ./sslmanager.sh --days $((10 * 365)) --create-ca
48 '''
49 On utilise le mot de passe "La maison francophone de l'Animation"
50 Dans le répertoire [[/ca]] on a donc les fichiers suivants :
51 * ca.crt : le certificat auto-signé racine
52 * ca.key : la clé du certificat, à ne ppas partager et à garder précieusement, sera utile pour signer des certificats
53 * ca.srl : le numéro de série de génération du certificat
54 * db.index : ???
55 * ca.pem : même chose que ca.crt au format PEM (chaine dans le même fichier, ici ça ne changer rien pour un certificat auto-signé)
56 * ca.der : même chose que ca.crt au format DER
57
58 === Vérification du certificat racine : ===
59 Le certificat racine s'étend sur 10 ans :
60 '''
61 # openssl x509 -noout -in ca/ca.crt -serial -subject -email -dates
62 serial=E66C7FED16EE0637
63 subject= /CN=animeka.com/C=FR/ST=Rhone-Alpes/L=Lyon/O=Animeka/OU=-/emailAddress=contact@animeka.com
64 contact@animeka.com
65 notBefore=Jun 27 18:14:34 2013 GMT
66 notAfter=Jun 25 18:14:34 2023 GMT
67 '''
68
69
70 === Installation dans le système : ===
71 '''
72 # cp ca/ca.crt /usr/local/share/ca-certificates/Animeka.crt
73 # update-ca-certificates
74 '''
75
76
77 === Vérifier que le certificat racine est bien installé : ===
78 '''
79 # openssl verify ca/ca.crt
80 ca/ca.crt: OK
81 '''
82
83
84 ==== Création/Mise à jour de liste de révocation : ====
85 '''
86 # ./sslmanager.sh -u
87 Using configuration from ./ca_openssl.cnf
88 Enter pass phrase for ./ca/ca.key:
89 '''
90
91
92 ==== Créer un certificat pour le serveur web : ====
93
94 === Création de la requête : ===
95         # ./sslmanager.sh --generate-csr=webserver-2013
96         Please fill informations for your certificate (default to CA infos).
97          [C]  City code on 2 letters [default : FR]: 
98          [ST] Your state or region [default : Rhone-Alpes]: 
99          [L]  Your city or location [default : Lyon]: 
100          [O]  Your organisation or company [default : Animeka]: 
101          [OU] Your unit organisation [default : webserver-2013]: 
102          [CN] Your FQDN [default : animeka.com]: 
103          [E]  Email [default : contact@animeka.com]: 
104         Additional FQDN, one per line. End with an empty line.
105         SubjectAltName: DNS:animeka.com
106         SubjectAltName: DNS:*.animeka.com
107         SubjectAltName: DNS:animeka.org
108         SubjectAltName: DNS:*.animeka.org
109         SubjectAltName: DNS:
110         CSR_EV_URL=
111         Password for the key: 
112         Password for the key (again): 
113 Pour le mot de passe, utiliser un mot de passe généré. On ne va pas signer autre chose avec ce certificat.
114
115 === Création du certificat : ===
116 '''
117 # ./sslmanager.sh --days 365 --sign-csr=webserver-2013
118 Signature ok
119 subject=/C=FR/ST=Rhone-Alpes/L=Lyon/O=Animeka/OU=webserver-2013/CN=animeka.com/emailAddress=contact@animeka.com
120 Getting CA Private Key
121 Enter pass phrase for ./ca/ca.key:
122 '''
123
124
125 === Vérification du certificat : ===
126 '''
127 # openssl x509 -noout -in certs/webserver-2013.crt -subject -dates
128 subject= /C=FR/ST=Rhone-Alpes/L=Lyon/O=Animeka/OU=webserver-2013/CN=animeka.com/emailAddress=contact@animeka.com
129 notBefore=Jun 27 19:10:39 2013 GMT
130 notAfter=Jun 27 19:10:39 2014 GMT
131 '''
132
133
134 ==== Créer le vhost qui contients les informations du certificat racine : ====
135 '''
136 [/var/vhosts] # ./mkvhost cert.animeka.com && a2ensite cert.animeka.com && service apache2 reload
137 [/var/vhosts/cert.animeka.com/pages] # ln -s /usr/local/pkissl/ca/ca.crt . && ln -s /usr/local/pkissl/crl/ca-der.crl ca.crl
138 '''
139 Il faudra sûrement compléter cette section pour créer une jolie page pour le certificat.
140 Cliquer sur ca.crt depuis le navigateur et ajouter le certificat racine comme autorité de confiance.
141 Cliquer sur ca.crl depuis le navigateur et se mettre à jour par rapport au fichier de révocations.
142
143 ==== Configurer Apache pour utiliser le certificat SSL : ====
144
145 === Installer le certificat pour Apache : ===
146 Pour ne pas demander la clé pour utiliser le certificat, il faut utiliser la clé "insecure" qui se trouve dans [[/keys.]]
147 Pour l'installer il suffit de faire :
148 '''
149 # ./installapachesslcert.sh webserver-2013
150 '''
151
152
153 === Activation et configuration du module SSL : ===
154 [[/etc/apache2/mods-available/ssl.conf]] :
155 '''
156 SSLCertificateFile /etc/apache2/ssl/webserver.crt
157 SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
158 SSLCACertificateFile /etc/apache2/ssl/ca.pem
159 SSLCARevocationFile /etc/apache2/ssl.crl/ca.crl
160 '''
161 Activation et redémarrage :
162 '''
163 # a2enmod ssl && service apache2 restart
164 '''
165
166
167 === Activer SSL sur les vhosts : ===
168 '''
169 [/var/vhosts] # ./vhostforcessl assoc.animeka.org on
170 '''
171 Idem pour les autres vhost.
172 Pour animeka.com, on va copier la config plutôt que de forcer :
173 '''
174 [/etc/apache2/sites-available] # cp www.animeka.com www.animeka.com-ssl
175 '''
176 On édite www.animeka.com-ssl et on modifie les deux premières lignes :
177 '''
178 <VirtualHost _default_:443>
179   SSLEngine on
180 '''
181 Pour le webmail, il faut préciser à roundcube qu'il fonctionne en SSL :
182 //config/main.inc.php ://
183 '''
184 $rcmail_config['force_https'] = true;
185 $rcmail_config['skin_logo'] = '
186 '''
187 https://www.animeka.com/_img/animeka_ban_88x31.gif';
188
189 ===== Ajouter un certificat pour Postfix : =====
190 Le certificat va être utilisé au niveau du démon SMTP.
191 '''
192 [/usr/local/pkissl] # ./sslmanager.sh -g postfix-2013
193 Please fill informations for your certificate (default to CA infos).
194  [C]  City code on 2 letters [default : FR]: 
195  [ST] Your state or region [default : Rhone-Alpes]: 
196  [L]  Your city or location [default : Lyon]: 
197  [O]  Your organisation or company [default : Animeka]: 
198  [OU] Your unit organisation [default : postfix-2013]: 
199  [CN] Your FQDN [default : animeka.com]: mail.animeka.org
200  [E]  Email [default : contact@animeka.com]: 
201 Additional FQDN, one per line. End with an empty line.
202 SubjectAltName: DNS:mail.animeka.com
203 SubjectAltName: DNS:
204 Password for the key: 
205 Password for the key (again): 
206 [/usr/local/pkissl] # ./sslmanager.sh -s postfix-2013 -d 365
207 DNS:mail.animeka.com
208 Signature ok
209 subject=/C=FR/ST=Rhone-Alpes/L=Lyon/O=Animeka/OU=postfix-2013/CN=mail.animeka.org/emailAddress=contact@animeka.com
210 Getting CA Private Key
211 Enter pass phrase for ./ca/ca.key:
212 [/etc/postfix] # mkdir certs
213 [/etc/postfix/certs] # ln -s /usr/local/pkissl/ca/ca.pem .
214 [/etc/postfix/certs] # ln -s /usr/local/pkissl/certs/postfix-2013.crt postfix.crt
215 [/etc/postfix/certs] # ln -s /usr/local/pkissl/keys/postfix-2013.
216 '''
217 ''insecure.''''key postfix.key''
218 Édition de [[/etc/postfix/main.cf]] :
219 '''
220 smtpd_tls_CAfile=/etc/postfix/certs/ca.pem
221 smtpd_tls_cert_file=/etc/postfix/certs/postfix.crt
222 smtpd_tls_key_file=/etc/postfix/certs/postfix.key
223 smtp_tls_CAfile=/etc/postfix/certs/ca.pem
224 smtp_use_tls = yes
225 smtp_tls_note_starttls_offer = yes
226 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
227 '''
228
229 === Cas particuliers (gmail) : ===
230 [[/etc/postfix/deny_tls_per_domains]] :
231 '''
232 # File /etc/postfix/deny_tls_per_domains
233 #
234 # Insert the DNS domain should to be denied to use client-side TLS
235 #
236 # Example: mybusinessdomain.com         None
237 #
238 # DNS domain name                                               Action (None)
239 #
240 gmail.com None
241 #  End File
242
243
244 [/etc/postfix] # postmap deny_tls_per_domains
245 '''
246 Édition de [[/etc/postfix/main.cf]] :
247 '''
248 smtp_tls_per_site = hash:/etc/postfix/deny_tls_per_domains
249 '''
250 Redémarrage de postfix :
251 '''
252 # service postfix reload
253 '''
254
255
256 ===== Ajouter un certificat pour Dovecot : =====
257 Le certificat va être utilisé au nivau du démon IMAP.
258 '''
259 [/usr/local/pkissl] # ./sslmanager.sh -g dovecot-2013
260 Please fill informations for your certificate (default to CA infos).
261  [C]  City code on 2 letters [default : FR]: 
262  [ST] Your state or region [default : Rhone-Alpes]: 
263  [L]  Your city or location [default : Lyon]: 
264  [O]  Your organisation or company [default : Animeka]: 
265  [OU] Your unit organisation [default : dovecot-2013]: 
266  [CN] Your FQDN [default : animeka.com]: mail.animeka.org
267  [E]  Email [default : contact@animeka.com]: 
268 Additional FQDN, one per line. End with an empty line.
269 SubjectAltName: DNS:mail.animeka.com
270 SubjectAltName: DNS:
271 Password for the key: 
272 Password for the key (again): 
273 [/usr/local/pkissl] # ./sslmanager.sh -s dovecot-2013
274 DNS:mail.animeka.com
275 Signature ok
276 subject=/C=FR/ST=Rhone-Alpes/L=Lyon/O=Animeka/OU=dovecot-2013/CN=mail.animeka.org/emailAddress=contact@animeka.com
277 Getting CA Private Key
278 Enter pass phrase for ./ca/ca.key:
279 '''
280
281
282 Édition de [[/etc/dovecot/conf.d/10-ssl.conf]] :
283 '''
284 ssl = yes
285 ssl_cert = </etc/dovecot/dovecot.pem
286 ssl_key = </etc/dovecot/private/dovecot.pem
287 '''
288 Sauvegarde pem de Debian et mise en place des certificats :
289 '''
290 [/etc/dovecot] # mv dovecot.pem dovecot-debian.pem
291 [/etc/dovecot] # mv private/dovecot.pem private/dovecot-debian.pem
292 [/etc/dovecot] # ln -s /usr/local/pkissl/certs/dovecot-2013.crt dovecot.pem
293 [/etc/dovecot] # (cd private && ln -s /usr/local/pkissl/keys/dovecot-2013.insecure.key dovecot.pem)
294 '''
295 Redémarrage du service IMAP :
296 '''
297 service dovecot restart
298 '''