Projeto

Geral

Perfil

Geracaocertificados » Histórico » Versão 1

Mauricio Luiz Viani, 23/09/2021 18:33 h

1 1 Mauricio Luiz Viani
h1. Geração de Certificados
2 1 Mauricio Luiz Viani
3 1 Mauricio Luiz Viani
4 1 Mauricio Luiz Viani
5 1 Mauricio Luiz Viani
Para a geração e configuração do Certificado Digital, o seu servidor web deve possuir o utilitário OpenSSL instalado.
6 1 Mauricio Luiz Viani
7 1 Mauricio Luiz Viani
8 1 Mauricio Luiz Viani
9 1 Mauricio Luiz Viani
h2. Instalar o pacote openssl:
10 1 Mauricio Luiz Viani
11 1 Mauricio Luiz Viani
12 1 Mauricio Luiz Viani
13 1 Mauricio Luiz Viani
<pre>
14 1 Mauricio Luiz Viani
15 1 Mauricio Luiz Viani
 # apt-get install openssl
16 1 Mauricio Luiz Viani
17 1 Mauricio Luiz Viani
 # cd /etc/apache2/ssl
18 1 Mauricio Luiz Viani
19 1 Mauricio Luiz Viani
</pre>
20 1 Mauricio Luiz Viani
21 1 Mauricio Luiz Viani
22 1 Mauricio Luiz Viani
23 1 Mauricio Luiz Viani
A geração do CSR é divido em duas etapas: geração da chave privada e geração do CSR.
24 1 Mauricio Luiz Viani
25 1 Mauricio Luiz Viani
26 1 Mauricio Luiz Viani
27 1 Mauricio Luiz Viani
h2. Geração da Chave Privada
28 1 Mauricio Luiz Viani
29 1 Mauricio Luiz Viani
30 1 Mauricio Luiz Viani
31 1 Mauricio Luiz Viani
1. Crie ou acesse o diretório onde será criado o par de chaves e execute o seguinte comando:
32 1 Mauricio Luiz Viani
33 1 Mauricio Luiz Viani
34 1 Mauricio Luiz Viani
35 1 Mauricio Luiz Viani
<pre>
36 1 Mauricio Luiz Viani
37 1 Mauricio Luiz Viani
 # openssl genrsa -out rsa.key.pem 2048
38 1 Mauricio Luiz Viani
39 1 Mauricio Luiz Viani
</pre>
40 1 Mauricio Luiz Viani
41 1 Mauricio Luiz Viani
42 1 Mauricio Luiz Viani
43 1 Mauricio Luiz Viani
O comando vai gerar a chave privada no arquivo rsa.key.pem, mantenha este arquivo no seu servidor e não compartilhe com ninguém.
44 1 Mauricio Luiz Viani
45 1 Mauricio Luiz Viani
46 1 Mauricio Luiz Viani
47 1 Mauricio Luiz Viani
Faça uma cópia de segurança da sua chave privada, uma vez que não é possível recuperá-la em caso de perda.
48 1 Mauricio Luiz Viani
49 1 Mauricio Luiz Viani
50 1 Mauricio Luiz Viani
51 1 Mauricio Luiz Viani
A chave privada será utilizada juntamente com a chave do certificado que iremos emitir.
52 1 Mauricio Luiz Viani
53 1 Mauricio Luiz Viani
54 1 Mauricio Luiz Viani
55 1 Mauricio Luiz Viani
h2. Geração do CSR
56 1 Mauricio Luiz Viani
57 1 Mauricio Luiz Viani
58 1 Mauricio Luiz Viani
59 1 Mauricio Luiz Viani
No mesmo diretório execute o seguinte comando:
60 1 Mauricio Luiz Viani
61 1 Mauricio Luiz Viani
62 1 Mauricio Luiz Viani
63 1 Mauricio Luiz Viani
<pre>
64 1 Mauricio Luiz Viani
65 1 Mauricio Luiz Viani
 # openssl req -new -key rsa.key.pem -out dominio.csr.pem
66 1 Mauricio Luiz Viani
67 1 Mauricio Luiz Viani
</pre>
68 1 Mauricio Luiz Viani
69 1 Mauricio Luiz Viani
70 1 Mauricio Luiz Viani
71 1 Mauricio Luiz Viani
Observe que você pode substituir a palavra "dominio" por um nome que facilite sua identificação. (Ex. *expresso.pr.gov.br*.csr.pem).
72 1 Mauricio Luiz Viani
73 1 Mauricio Luiz Viani
74 1 Mauricio Luiz Viani
75 1 Mauricio Luiz Viani
Após executar o comando, responda as perguntas:
76 1 Mauricio Luiz Viani
77 1 Mauricio Luiz Viani
78 1 Mauricio Luiz Viani
79 1 Mauricio Luiz Viani
<pre>
80 1 Mauricio Luiz Viani
81 1 Mauricio Luiz Viani
 Country Name: BR
82 1 Mauricio Luiz Viani
83 1 Mauricio Luiz Viani
 State or Province Name: Seu estado por extenso e sem abreviações.
84 1 Mauricio Luiz Viani
85 1 Mauricio Luiz Viani
 Locality Name: Sua cidade.
86 1 Mauricio Luiz Viani
87 1 Mauricio Luiz Viani
 Organization: Nome oficial da empresa, igual ao existente no cartão do CNPJ.
88 1 Mauricio Luiz Viani
89 1 Mauricio Luiz Viani
 Organizational Unit: Departamento ou setor da empresa.
90 1 Mauricio Luiz Viani
91 1 Mauricio Luiz Viani
 Common Name: url do dominio onde o certificado vai ser utilizado. (ex.: expresso.pr.gov.br)
92 1 Mauricio Luiz Viani
93 1 Mauricio Luiz Viani
94 1 Mauricio Luiz Viani
95 1 Mauricio Luiz Viani
 Email Address: Não informe nada, deixe em branco.
96 1 Mauricio Luiz Viani
97 1 Mauricio Luiz Viani
 A challenge password: Não informe nada, deixe em branco.
98 1 Mauricio Luiz Viani
99 1 Mauricio Luiz Viani
 An optional company name: Não informe nada, deixe em branco.
100 1 Mauricio Luiz Viani
101 1 Mauricio Luiz Viani
</pre>
102 1 Mauricio Luiz Viani
103 1 Mauricio Luiz Viani
104 1 Mauricio Luiz Viani
105 1 Mauricio Luiz Viani
O CSR foi criado e armazenado no arquivo dominio.csr.pem, copie todo o seu conteúdo e cole no formulário de pedido do certificado digital.
106 1 Mauricio Luiz Viani
107 1 Mauricio Luiz Viani
108 1 Mauricio Luiz Viani
109 1 Mauricio Luiz Viani
h3. Geração com um Comando Apenas
110 1 Mauricio Luiz Viani
111 1 Mauricio Luiz Viani
112 1 Mauricio Luiz Viani
113 1 Mauricio Luiz Viani
Os resultados anteriores também podem ser produzidos com uma única chamada de comando, que irá gerar a chave privada e também o certificado:
114 1 Mauricio Luiz Viani
115 1 Mauricio Luiz Viani
116 1 Mauricio Luiz Viani
117 1 Mauricio Luiz Viani
<pre>
118 1 Mauricio Luiz Viani
119 1 Mauricio Luiz Viani
 # openssl req -new -nodes -newkey rsa:2048 -keyout rsa.key.pem -out dominio.csr.pem
120 1 Mauricio Luiz Viani
121 1 Mauricio Luiz Viani
</pre>
122 1 Mauricio Luiz Viani
123 1 Mauricio Luiz Viani
124 1 Mauricio Luiz Viani
125 1 Mauricio Luiz Viani
Exemplo para o caso do certificado do Expresso:
126 1 Mauricio Luiz Viani
127 1 Mauricio Luiz Viani
128 1 Mauricio Luiz Viani
129 1 Mauricio Luiz Viani
<pre>
130 1 Mauricio Luiz Viani
131 1 Mauricio Luiz Viani
 # openssl req -newkey rsa:2048 -nodes -keyout rsa.key.pem -out expresso.pr.gov.br.csr.pem
132 1 Mauricio Luiz Viani
133 1 Mauricio Luiz Viani
</pre>
134 1 Mauricio Luiz Viani
135 1 Mauricio Luiz Viani
136 1 Mauricio Luiz Viani
137 1 Mauricio Luiz Viani
Dados de domínio do Expresso:
138 1 Mauricio Luiz Viani
139 1 Mauricio Luiz Viani
> Country Name: *BR*
140 1 Mauricio Luiz Viani
141 1 Mauricio Luiz Viani
> State or Province Name: *Parana*
142 1 Mauricio Luiz Viani
143 1 Mauricio Luiz Viani
> Locality Name: *Curitiba*
144 1 Mauricio Luiz Viani
145 1 Mauricio Luiz Viani
> Organization Name: *Companhia de Tecnologia da Informacao e Comunicacao do Parana*
146 1 Mauricio Luiz Viani
147 1 Mauricio Luiz Viani
> Organizational Unit Name: *Gerencia de Servicos de Rede*
148 1 Mauricio Luiz Viani
149 1 Mauricio Luiz Viani
> Common Name: *expresso.pr.gov.br*
150 1 Mauricio Luiz Viani
151 1 Mauricio Luiz Viani
> Email Address:
152 1 Mauricio Luiz Viani
153 1 Mauricio Luiz Viani
> A challenge password:
154 1 Mauricio Luiz Viani
155 1 Mauricio Luiz Viani
> An optional company name:
156 1 Mauricio Luiz Viani
157 1 Mauricio Luiz Viani
> 
158 1 Mauricio Luiz Viani
159 1 Mauricio Luiz Viani
160 1 Mauricio Luiz Viani
161 1 Mauricio Luiz Viani
Passando os dados por linha de comando:
162 1 Mauricio Luiz Viani
163 1 Mauricio Luiz Viani
<pre>
164 1 Mauricio Luiz Viani
165 1 Mauricio Luiz Viani
openssl -subj '/C=BR/ST=Parana/L=Curitiba/O=Companhia de Tecnologia da Informacao e Comunicacao do Parana/OU=Gerencia de Servicos de Rede/CN=expresso.pr.gov.br' ...
166 1 Mauricio Luiz Viani
167 1 Mauricio Luiz Viani
</pre>
168 1 Mauricio Luiz Viani
169 1 Mauricio Luiz Viani
170 1 Mauricio Luiz Viani
171 1 Mauricio Luiz Viani
h3. Para Ver os Dados do Certificado
172 1 Mauricio Luiz Viani
173 1 Mauricio Luiz Viani
174 1 Mauricio Luiz Viani
175 1 Mauricio Luiz Viani
<pre>
176 1 Mauricio Luiz Viani
177 1 Mauricio Luiz Viani
 # openssl req -noout -text -in dominio.csr.pem
178 1 Mauricio Luiz Viani
179 1 Mauricio Luiz Viani
</pre>
180 1 Mauricio Luiz Viani
181 1 Mauricio Luiz Viani
182 1 Mauricio Luiz Viani
183 1 Mauricio Luiz Viani
h3. Criar a chave pública a partir da chave privada
184 1 Mauricio Luiz Viani
185 1 Mauricio Luiz Viani
186 1 Mauricio Luiz Viani
187 1 Mauricio Luiz Viani
<pre>
188 1 Mauricio Luiz Viani
189 1 Mauricio Luiz Viani
 # openssl rsa -in rsa.key.pem -pubout > pub.key.pem
190 1 Mauricio Luiz Viani
191 1 Mauricio Luiz Viani
</pre>
192 1 Mauricio Luiz Viani
193 1 Mauricio Luiz Viani
194 1 Mauricio Luiz Viani
195 1 Mauricio Luiz Viani
h2. Geração de Certificados Autoassinados
196 1 Mauricio Luiz Viani
197 1 Mauricio Luiz Viani
198 1 Mauricio Luiz Viani
199 1 Mauricio Luiz Viani
Gerar a chave e certificado:
200 1 Mauricio Luiz Viani
201 1 Mauricio Luiz Viani
202 1 Mauricio Luiz Viani
203 1 Mauricio Luiz Viani
<pre>
204 1 Mauricio Luiz Viani
205 1 Mauricio Luiz Viani
 # openssl genrsa -out rsa.key.pem 2048
206 1 Mauricio Luiz Viani
207 1 Mauricio Luiz Viani
 # openssl req -new -key rsa.key.pem -x509 -out dominio.crt.pem -days 1825
208 1 Mauricio Luiz Viani
209 1 Mauricio Luiz Viani
</pre>
210 1 Mauricio Luiz Viani
211 1 Mauricio Luiz Viani
212 1 Mauricio Luiz Viani
213 1 Mauricio Luiz Viani
No arquivo /etc/apache2/sites-available/ssl (ou outro que possua virtual host 443):
214 1 Mauricio Luiz Viani
215 1 Mauricio Luiz Viani
216 1 Mauricio Luiz Viani
217 1 Mauricio Luiz Viani
<pre>
218 1 Mauricio Luiz Viani
219 1 Mauricio Luiz Viani
 Load Module ssl_module
220 1 Mauricio Luiz Viani
221 1 Mauricio Luiz Viani
 SSLEngine On
222 1 Mauricio Luiz Viani
223 1 Mauricio Luiz Viani
 SSLCertificateFile        /etc/apache2/ssl/dominio.crt.pem
224 1 Mauricio Luiz Viani
225 1 Mauricio Luiz Viani
 SSLCertificateKeyFile     /etc/apache2/ssl/rsa.key.pem
226 1 Mauricio Luiz Viani
227 1 Mauricio Luiz Viani
 SSLCACertificatePath      /etc/apache2/ssl
228 1 Mauricio Luiz Viani
229 1 Mauricio Luiz Viani
 SSLCACertificateFile      /etc/apache2/ssl/dominio.crt.pem
230 1 Mauricio Luiz Viani
231 1 Mauricio Luiz Viani
232 1 Mauricio Luiz Viani
233 1 Mauricio Luiz Viani
 SSLProtocol               -ALL +TLSv1.1 +TLSv1.2 +SSLv3
234 1 Mauricio Luiz Viani
235 1 Mauricio Luiz Viani
236 1 Mauricio Luiz Viani
237 1 Mauricio Luiz Viani
</pre>
238 1 Mauricio Luiz Viani
239 1 Mauricio Luiz Viani
240 1 Mauricio Luiz Viani
241 1 Mauricio Luiz Viani
No arquivo /etc/apache2/ports.conf:
242 1 Mauricio Luiz Viani
243 1 Mauricio Luiz Viani
244 1 Mauricio Luiz Viani
245 1 Mauricio Luiz Viani
<pre>
246 1 Mauricio Luiz Viani
247 1 Mauricio Luiz Viani
 Listen 443
248 1 Mauricio Luiz Viani
249 1 Mauricio Luiz Viani
</pre>
250 1 Mauricio Luiz Viani
251 1 Mauricio Luiz Viani
252 1 Mauricio Luiz Viani
253 1 Mauricio Luiz Viani
Para redirecionar a porta 80 para 443:
254 1 Mauricio Luiz Viani
255 1 Mauricio Luiz Viani
256 1 Mauricio Luiz Viani
257 1 Mauricio Luiz Viani
No arquivo /etc/apache2/sites-available/default (ou outro que possua virtual host 80):
258 1 Mauricio Luiz Viani
259 1 Mauricio Luiz Viani
260 1 Mauricio Luiz Viani
261 1 Mauricio Luiz Viani
<pre>
262 1 Mauricio Luiz Viani
263 1 Mauricio Luiz Viani
 RewriteEngine On
264 1 Mauricio Luiz Viani
265 1 Mauricio Luiz Viani
 RewriteCond %{HTTPS} off
266 1 Mauricio Luiz Viani
267 1 Mauricio Luiz Viani
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
268 1 Mauricio Luiz Viani
269 1 Mauricio Luiz Viani
</pre>
270 1 Mauricio Luiz Viani
271 1 Mauricio Luiz Viani
272 1 Mauricio Luiz Viani
273 1 Mauricio Luiz Viani
Reciclar o servidor web:
274 1 Mauricio Luiz Viani
275 1 Mauricio Luiz Viani
276 1 Mauricio Luiz Viani
277 1 Mauricio Luiz Viani
<pre>
278 1 Mauricio Luiz Viani
279 1 Mauricio Luiz Viani
 invoke-rc.d apache2 restart
280 1 Mauricio Luiz Viani
281 1 Mauricio Luiz Viani
</pre>
282 1 Mauricio Luiz Viani
283 1 Mauricio Luiz Viani
284 1 Mauricio Luiz Viani
285 1 Mauricio Luiz Viani
h2. Geração de Certificados Autoassinados (com suporte a subjectAltName)
286 1 Mauricio Luiz Viani
287 1 Mauricio Luiz Viani
288 1 Mauricio Luiz Viani
289 1 Mauricio Luiz Viani
h3. Criar um arquivo de configuração de nomes: domain_alias.cnf
290 1 Mauricio Luiz Viani
291 1 Mauricio Luiz Viani
292 1 Mauricio Luiz Viani
293 1 Mauricio Luiz Viani
A) Certificado usando DNS fixos:
294 1 Mauricio Luiz Viani
295 1 Mauricio Luiz Viani
296 1 Mauricio Luiz Viani
297 1 Mauricio Luiz Viani
<pre>
298 1 Mauricio Luiz Viani
299 1 Mauricio Luiz Viani
[ ext_alt_names ]
300 1 Mauricio Luiz Viani
301 1 Mauricio Luiz Viani
nsCertType              = server
302 1 Mauricio Luiz Viani
303 1 Mauricio Luiz Viani
keyUsage                = digitalSignature,nonRepudiation,keyEncipherment
304 1 Mauricio Luiz Viani
305 1 Mauricio Luiz Viani
extendedKeyUsage        = serverAuth
306 1 Mauricio Luiz Viani
307 1 Mauricio Luiz Viani
subjectKeyIdentifier    = hash
308 1 Mauricio Luiz Viani
309 1 Mauricio Luiz Viani
authorityKeyIdentifier  = keyid,issuer
310 1 Mauricio Luiz Viani
311 1 Mauricio Luiz Viani
subjectAltName          = @alt_names
312 1 Mauricio Luiz Viani
313 1 Mauricio Luiz Viani
314 1 Mauricio Luiz Viani
315 1 Mauricio Luiz Viani
[ alt_names ]
316 1 Mauricio Luiz Viani
317 1 Mauricio Luiz Viani
DNS.1 = mail.expresso.celepar.parana
318 1 Mauricio Luiz Viani
319 1 Mauricio Luiz Viani
DNS.2 = www.expresso.celepar.parana
320 1 Mauricio Luiz Viani
321 1 Mauricio Luiz Viani
DNS.3 = redmine.expresso.celepar.parana
322 1 Mauricio Luiz Viani
323 1 Mauricio Luiz Viani
</pre>
324 1 Mauricio Luiz Viani
325 1 Mauricio Luiz Viani
326 1 Mauricio Luiz Viani
327 1 Mauricio Luiz Viani
B) Certificado usando wildcard:
328 1 Mauricio Luiz Viani
329 1 Mauricio Luiz Viani
330 1 Mauricio Luiz Viani
331 1 Mauricio Luiz Viani
<pre>
332 1 Mauricio Luiz Viani
333 1 Mauricio Luiz Viani
[ ext_alt_names ]
334 1 Mauricio Luiz Viani
335 1 Mauricio Luiz Viani
nsCertType              = server
336 1 Mauricio Luiz Viani
337 1 Mauricio Luiz Viani
keyUsage                = digitalSignature,nonRepudiation,keyEncipherment
338 1 Mauricio Luiz Viani
339 1 Mauricio Luiz Viani
extendedKeyUsage        = serverAuth
340 1 Mauricio Luiz Viani
341 1 Mauricio Luiz Viani
subjectKeyIdentifier    = hash
342 1 Mauricio Luiz Viani
343 1 Mauricio Luiz Viani
authorityKeyIdentifier  = keyid,issuer
344 1 Mauricio Luiz Viani
345 1 Mauricio Luiz Viani
subjectAltName          = DNS:*.expresso.celepar.parana
346 1 Mauricio Luiz Viani
347 1 Mauricio Luiz Viani
</pre>
348 1 Mauricio Luiz Viani
349 1 Mauricio Luiz Viani
350 1 Mauricio Luiz Viani
351 1 Mauricio Luiz Viani
h3. Gerar os certificados:
352 1 Mauricio Luiz Viani
353 1 Mauricio Luiz Viani
354 1 Mauricio Luiz Viani
355 1 Mauricio Luiz Viani
<pre>
356 1 Mauricio Luiz Viani
357 1 Mauricio Luiz Viani
 # openssl genrsa -out rsa.key.pem 2048
358 1 Mauricio Luiz Viani
359 1 Mauricio Luiz Viani
 # openssl req -new -key rsa.key.pem -out expresso.celepar.parana.csr.pem
360 1 Mauricio Luiz Viani
361 1 Mauricio Luiz Viani
 # openssl x509 -req -in expresso.celepar.parana.csr.pem -signkey rsa.key.pem -extfile domain_alias.cnf -extensions ext_alt_names -days 1825 -out expresso.celepar.parana.crt.pem
362 1 Mauricio Luiz Viani
363 1 Mauricio Luiz Viani
</pre>
364 1 Mauricio Luiz Viani
365 1 Mauricio Luiz Viani
366 1 Mauricio Luiz Viani
367 1 Mauricio Luiz Viani
h2. Outros procedimentos com chaves público-privadas
368 1 Mauricio Luiz Viani
369 1 Mauricio Luiz Viani
370 1 Mauricio Luiz Viani
371 1 Mauricio Luiz Viani
h3. Atualização de SHA256 no expressodev:
372 1 Mauricio Luiz Viani
373 1 Mauricio Luiz Viani
374 1 Mauricio Luiz Viani
375 1 Mauricio Luiz Viani
<pre>
376 1 Mauricio Luiz Viani
377 1 Mauricio Luiz Viani
 # openssl genrsa -out rsa.key.pem 2048
378 1 Mauricio Luiz Viani
379 1 Mauricio Luiz Viani
 # openssl req -new -sha256 -key rsa.key.pem -out expressodev.celepar.parana.csr.pem -subj '/C=BR/ST=Parana/L=Curitiba/O=Companhia de Tecnologia da Informacao e Comunicacao do Parana/OU=Gerencia de Servicos de Rede/CN=expressodev.celepar.parana'
380 1 Mauricio Luiz Viani
381 1 Mauricio Luiz Viani
 # openssl x509 -sha256 -req -in expressodev.celepar.parana.csr.pem -signkey rsa.key.pem -extfile domain_alias.cnf -extensions ext_alt_names -days 1825 -out expressodev.celepar.parana.crt.pem
382 1 Mauricio Luiz Viani
383 1 Mauricio Luiz Viani
</pre>
384 1 Mauricio Luiz Viani
385 1 Mauricio Luiz Viani
386 1 Mauricio Luiz Viani
387 1 Mauricio Luiz Viani
h3. Gerar par de chaves para um usuário
388 1 Mauricio Luiz Viani
389 1 Mauricio Luiz Viani
390 1 Mauricio Luiz Viani
391 1 Mauricio Luiz Viani
<pre>
392 1 Mauricio Luiz Viani
393 1 Mauricio Luiz Viani
 Entrar na pasta .ssh do usuário. Ex: /home/viani/.ssh
394 1 Mauricio Luiz Viani
395 1 Mauricio Luiz Viani
396 1 Mauricio Luiz Viani
397 1 Mauricio Luiz Viani
 # ssh-keygen -t rsa
398 1 Mauricio Luiz Viani
399 1 Mauricio Luiz Viani
400 1 Mauricio Luiz Viani
401 1 Mauricio Luiz Viani
 O resultado será a geração de dois arquivos: id_rsa e id_rsa.pub
402 1 Mauricio Luiz Viani
403 1 Mauricio Luiz Viani
</pre>