Mercurial > hg > nginx-site
comparison xml/ru/docs/http/configuring_https_servers.xml @ 660:ba45bd0fc71e
configuring_https_servers: markup changes (mostly).
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 28 Aug 2012 09:59:56 +0000 |
parents | 77a3314c74a7 |
children | e1579b244800 |
comparison
equal
deleted
inserted
replaced
659:77a3314c74a7 | 660:ba45bd0fc71e |
---|---|
19 в блоке server, а также указать местоположение файлов с | 19 в блоке server, а также указать местоположение файлов с |
20 сертификатом сервера и секретным ключом: | 20 сертификатом сервера и секретным ключом: |
21 | 21 |
22 <programlisting> | 22 <programlisting> |
23 server { | 23 server { |
24 listen 443; | 24 listen 443; |
25 server_name www.example.com; | 25 server_name www.example.com; |
26 ssl on; | 26 ssl <b>on</b>; |
27 ssl_certificate www.example.com.crt; | 27 ssl_certificate <b>www.example.com.crt</b>; |
28 ssl_certificate_key www.example.com.key; | 28 ssl_certificate_key <b>www.example.com.key</b>; |
29 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; | 29 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; |
30 ssl_ciphers HIGH:!aNULL:!MD5; | 30 ssl_ciphers HIGH:!aNULL:!MD5; |
31 ... | 31 ... |
32 } | 32 } |
33 </programlisting> | 33 </programlisting> |
34 | 34 |
35 Сертификат сервера является публичным. | 35 Сертификат сервера является публичным. |
37 Секретный ключ следует хранить в файле с ограниченным доступом | 37 Секретный ключ следует хранить в файле с ограниченным доступом |
38 (права доступа должны позволять основному процессу nginx читать этот файл). | 38 (права доступа должны позволять основному процессу nginx читать этот файл). |
39 Секретный ключ можно также хранить в одном файле с сертификатом: | 39 Секретный ключ можно также хранить в одном файле с сертификатом: |
40 | 40 |
41 <programlisting> | 41 <programlisting> |
42 ssl_certificate www.example.com.cert; | 42 ssl_certificate www.example.com.cert; |
43 ssl_certificate_key www.example.com.cert; | 43 ssl_certificate_key www.example.com.cert; |
44 </programlisting> | 44 </programlisting> |
45 | 45 |
46 при этом права доступа к файлу следует также ограничить. | 46 при этом права доступа к файлу следует также ограничить. |
47 Несмотря на то, что и сертификат, и ключ хранятся в одном файле, | 47 Несмотря на то, что и сертификат, и ключ хранятся в одном файле, |
48 клиенту посылается только сертификат. | 48 клиенту посылается только сертификат. |
83 На мультипроцессорных системах следует запускать несколько рабочих процессов, | 83 На мультипроцессорных системах следует запускать несколько рабочих процессов, |
84 не меньше числа доступных процессорных ядер. | 84 не меньше числа доступных процессорных ядер. |
85 Наиболее ресурсоёмкой для процессора является операция SSL handshake, в рамках | 85 Наиболее ресурсоёмкой для процессора является операция SSL handshake, в рамках |
86 которой формируются криптографические параметры сессии. | 86 которой формируются криптографические параметры сессии. |
87 Существует два способа уменьшения числа этих операций, производимых для каждого | 87 Существует два способа уменьшения числа этих операций, производимых для каждого |
88 клиента: включение постоянных (keepalive) соединений, позволяющих в рамках | 88 клиента: использование постоянных (keepalive) соединений, позволяющих в рамках |
89 одного соединения обрабатывать сразу несколько запросов, и повторное | 89 одного соединения обрабатывать сразу несколько запросов, и повторное |
90 использование параметров SSL-сессии для предотвращения необходимости выполнения | 90 использование параметров SSL-сессии для предотвращения необходимости выполнения |
91 SSL handshake для параллельных и последующих соединений. | 91 SSL handshake для параллельных и последующих соединений. |
92 Сессии хранятся в кэше SSL-сессий, разделяемом между рабочими процессами и | 92 Сессии хранятся в кэше SSL-сессий, разделяемом между рабочими процессами и |
93 настраиваемом директивой | 93 настраиваемом директивой |
95 В 1 мегабайт кэша помещается около 4000 сессий. | 95 В 1 мегабайт кэша помещается около 4000 сессий. |
96 Таймаут кэша по умолчанию равен 5 минутам. | 96 Таймаут кэша по умолчанию равен 5 минутам. |
97 Он может быть увеличен с помощью директивы | 97 Он может быть увеличен с помощью директивы |
98 <link doc="ngx_http_ssl_module.xml" id="ssl_session_timeout"/>. | 98 <link doc="ngx_http_ssl_module.xml" id="ssl_session_timeout"/>. |
99 Вот пример конфигурации, оптимизированной под 4-ядерную систему | 99 Вот пример конфигурации, оптимизированной под 4-ядерную систему |
100 с 10M разделяемого кэша сессий: | 100 с 10-мегабайтным разделяемым кэшем сессий: |
101 | 101 |
102 <programlisting> | 102 <programlisting> |
103 <b>worker_processes 4</b>; | 103 <b>worker_processes 4</b>; |
104 | 104 |
105 http { | 105 http { |
106 <b>ssl_session_cache shared:SSL:10m</b>; | 106 <b>ssl_session_cache shared:SSL:10m</b>; |
107 <b>ssl_session_timeout 10m</b>; | 107 <b>ssl_session_timeout 10m</b>; |
108 | 108 |
109 server { | 109 server { |
110 listen 443; | 110 listen 443; |
111 server_name www.example.com; | 111 server_name www.example.com; |
112 <b>keepalive_timeout 70</b>; | 112 <b>keepalive_timeout 70</b>; |
113 | 113 |
114 ssl on; | 114 ssl on; |
115 ssl_certificate www.example.com.crt; | 115 ssl_certificate www.example.com.crt; |
116 ssl_certificate_key www.example.com.key; | 116 ssl_certificate_key www.example.com.key; |
117 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; | 117 ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; |
118 ssl_ciphers HIGH:!aNULL:!MD5; | 118 ssl_ciphers HIGH:!aNULL:!MD5; |
119 ... | 119 ... |
120 </programlisting> | 120 </programlisting> |
121 </para> | 121 </para> |
122 | 122 |
123 </section> | 123 </section> |
145 Полученный файл следует указать в директиве | 145 Полученный файл следует указать в директиве |
146 <link doc="ngx_http_ssl_module.xml" id="ssl_certificate"/>: | 146 <link doc="ngx_http_ssl_module.xml" id="ssl_certificate"/>: |
147 | 147 |
148 <programlisting> | 148 <programlisting> |
149 server { | 149 server { |
150 listen 443; | 150 listen 443; |
151 server_name www.example.com; | 151 server_name www.example.com; |
152 ssl on; | 152 ssl on; |
153 ssl_certificate www.example.com.chained.crt; | 153 ssl_certificate www.example.com.chained.crt; |
154 ssl_certificate_key www.example.com.key; | 154 ssl_certificate_key www.example.com.key; |
155 ... | 155 ... |
156 } | 156 } |
157 </programlisting> | 157 </programlisting> |
158 | 158 |
159 Если сертификат сервера и связка сертификатов были соединены в неправильном | 159 Если сертификат сервера и связка сертификатов были соединены в неправильном |
201 /OU=ValiCert Class 2 Policy Validation Authority | 201 /OU=ValiCert Class 2 Policy Validation Authority |
202 /CN=http://www.valicert.com//emailAddress=info@valicert.com | 202 /CN=http://www.valicert.com//emailAddress=info@valicert.com |
203 ... | 203 ... |
204 </programlisting> | 204 </programlisting> |
205 | 205 |
206 В этом примере субъект (“<i>s</i>”) сертификата №0 сервера | 206 В этом примере субъект (“<i>s</i>”) сертификата №0 сервера |
207 <literal>www.GoDaddy.com</literal> подписан издателем (“<i>i</i>”), | 207 <literal>www.GoDaddy.com</literal> подписан издателем (“<i>i</i>”), |
208 который в свою очередь является субъектом сертификата №1, подписанного | 208 который в свою очередь является субъектом сертификата №1, подписанного |
209 издателем, который в свою очередь является субъектом сертификата №2, | 209 издателем, который в свою очередь является субъектом сертификата №2, |
210 подписанного общеизвестным издателем <i>ValiCert, Inc.</i>, | 210 подписанного общеизвестным издателем <i>ValiCert, Inc.</i>, |
211 чей сертификат хранится во встроенной в браузеры базе данных | 211 чей сертификат хранится во встроенной в браузеры базе данных |
212 сертификатов (которая в тёмном чулане хранится в доме, который построил Джек). | 212 сертификатов (которая в тёмном чулане хранится в доме, который построил Джек). |
222 | 222 |
223 <section id="single_http_https_server" name="Единый HTTP/HTTPS сервер"> | 223 <section id="single_http_https_server" name="Единый HTTP/HTTPS сервер"> |
224 | 224 |
225 <para> | 225 <para> |
226 Если серверы HTTP и HTTPS идентичны, | 226 Если серверы HTTP и HTTPS идентичны, |
227 можно настроить единый сервер, который обслуживает | 227 можно настроить единый сервер, который обслуживает как HTTP-, |
228 как HTTP-, так и HTTPS-запросы. | 228 так и HTTPS-запросы. |
229 Для этого следует исключить директиву “<literal>ssl on</literal>” | 229 Для этого следует исключить директиву “<literal>ssl on</literal>” |
230 и добавить параметр <literal>ssl</literal> к порту *:443: | 230 и добавить параметр <literal>ssl</literal> к порту *:443: |
231 | 231 |
232 <programlisting> | 232 <programlisting> |
233 server { | 233 server { |
234 listen 80; | 234 listen 80; |
235 listen 443 ssl; | 235 listen 443 ssl; |
236 server_name www.example.com; | 236 server_name www.example.com; |
237 ssl_certificate www.example.com.crt; | 237 ssl_certificate www.example.com.crt; |
238 ssl_certificate_key www.example.com.key; | 238 ssl_certificate_key www.example.com.key; |
239 ... | 239 ... |
240 } | 240 } |
241 </programlisting> | 241 </programlisting> |
242 | 242 |
243 <note> | 243 <note> |
258 Типичная проблема возникает при настройке двух и более серверов HTTPS, | 258 Типичная проблема возникает при настройке двух и более серверов HTTPS, |
259 слушающих на одном и том же IP-адресе: | 259 слушающих на одном и том же IP-адресе: |
260 | 260 |
261 <programlisting> | 261 <programlisting> |
262 server { | 262 server { |
263 listen 443; | 263 listen 443; |
264 server_name www.example.com; | 264 server_name www.example.com; |
265 ssl on; | 265 ssl on; |
266 ssl_certificate www.example.com.crt; | 266 ssl_certificate www.example.com.crt; |
267 ... | 267 ... |
268 } | 268 } |
269 | 269 |
270 server { | 270 server { |
271 listen 443; | 271 listen 443; |
272 server_name www.example.org; | 272 server_name www.example.org; |
273 ssl on; | 273 ssl on; |
274 ssl_certificate www.example.org.crt; | 274 ssl_certificate www.example.org.crt; |
275 ... | 275 ... |
276 } | 276 } |
277 </programlisting> | 277 </programlisting> |
278 | 278 |
279 В такой конфигурации браузер получит сертификат первого сервера, т.е. | 279 В такой конфигурации браузер получит сертификат сервера по умолчанию, т.е. |
280 <literal>www.example.com</literal>, независимо от запрашиваемого имени сервера. | 280 <literal>www.example.com</literal>, независимо от запрашиваемого имени сервера. |
281 Это связано с поведением протокола SSL. | 281 Это связано с поведением протокола SSL. |
282 SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, | 282 SSL-соединение устанавливается до того, как браузер посылает HTTP-запрос, |
283 и nginx не знает имени запрашиваемого сервера. | 283 и nginx не знает имени запрашиваемого сервера. |
284 Следовательно, он лишь может предложить сертификат сервера по умолчанию. | 284 Следовательно, он лишь может предложить сертификат сервера по умолчанию. |
288 Наиболее старым и надёжным способом решения этой проблемы | 288 Наиболее старым и надёжным способом решения этой проблемы |
289 является назначение каждому HTTPS-серверу своего IP-адреса: | 289 является назначение каждому HTTPS-серверу своего IP-адреса: |
290 | 290 |
291 <programlisting> | 291 <programlisting> |
292 server { | 292 server { |
293 listen 192.168.1.1:443; | 293 listen 192.168.1.1:443; |
294 server_name www.example.com; | 294 server_name www.example.com; |
295 ssl on; | 295 ssl on; |
296 ssl_certificate www.example.com.crt; | 296 ssl_certificate www.example.com.crt; |
297 ... | 297 ... |
298 } | 298 } |
299 | 299 |
300 server { | 300 server { |
301 listen 192.168.1.2:443; | 301 listen 192.168.1.2:443; |
302 server_name www.example.org; | 302 server_name www.example.org; |
303 ssl on; | 303 ssl on; |
304 ssl_certificate www.example.org.crt; | 304 ssl_certificate www.example.org.crt; |
305 ... | 305 ... |
306 } | 306 } |
307 </programlisting> | 307 </programlisting> |
308 </para> | 308 </para> |
309 | 309 |
310 </section> | 310 </section> |
311 | 311 |
312 | 312 |
313 <section id="certificate_with_several_names" | 313 <section id="certificate_with_several_names" |
314 name="SSL-сертификат с несколькими именами"> | 314 name="SSL-сертификат с несколькими именами"> |
315 | 315 |
316 <para> | 316 <para> |
317 Существуют и другие способы, которые позволяют использовать один и тот же | 317 Существуют и другие способы, которые позволяют использовать один и тот же |
318 IP-адрес сразу для нескольких HTTPS-серверов. | 318 IP-адрес сразу для нескольких HTTPS-серверов. |
319 Все они, однако, имеют свои недостатки. | 319 Все они, однако, имеют свои недостатки. |
320 Одним из таких способов является использование сертификата с несколькими | 320 Одним из таких способов является использование сертификата с несколькими |
321 именами в поле SubjectAltName сертификата, например <literal>www.example.com</literal> | 321 именами в поле SubjectAltName сертификата, например |
322 и <literal>www.example.org</literal>. | 322 <literal>www.example.com</literal> и <literal>www.example.org</literal>. |
323 Однако, длина поля SubjectAltName ограничена. | 323 Однако, длина поля SubjectAltName ограничена. |
324 </para> | 324 </para> |
325 | 325 |
326 <para> | 326 <para> |
327 Другим способом является использование wildcard-сертификата, например | 327 Другим способом является использование wildcard-сертификата, например |
330 на заданном уровне. | 330 на заданном уровне. |
331 Под такой сертификат подходит <literal>www.example.org</literal>, но не подходят | 331 Под такой сертификат подходит <literal>www.example.org</literal>, но не подходят |
332 <literal>example.org</literal> и <literal>www.sub.example.org</literal>. | 332 <literal>example.org</literal> и <literal>www.sub.example.org</literal>. |
333 Два вышеуказанных способа можно комбинировать. | 333 Два вышеуказанных способа можно комбинировать. |
334 Сертификат может одновременно содержать и точное, и wildcard имена в поле | 334 Сертификат может одновременно содержать и точное, и wildcard имена в поле |
335 SubjectAltName, например <literal>example.org</literal> и <literal>*.example.org</literal>. | 335 SubjectAltName, например |
336 <literal>example.org</literal> и <literal>*.example.org</literal>. | |
336 </para> | 337 </para> |
337 | 338 |
338 <para> | 339 <para> |
339 Лучше поместить сведения о файле сертификата с несколькими именами и | 340 Лучше поместить сведения о файле сертификата с несколькими именами и |
340 файле с его секретным ключом на уровне конфигурации <i>http</i>, чтобы | 341 файле с его секретным ключом на уровне конфигурации <i>http</i>, чтобы |
341 все серверы унаследовали их единственную копию в памяти: | 342 все серверы унаследовали их единственную копию в памяти: |
342 | 343 |
343 <programlisting> | 344 <programlisting> |
344 ssl_certificate common.crt; | 345 ssl_certificate common.crt; |
345 ssl_certificate_key common.key; | 346 ssl_certificate_key common.key; |
346 | 347 |
347 server { | 348 server { |
348 listen 443; | 349 listen 443; |
349 server_name www.example.com; | 350 server_name www.example.com; |
350 ssl on; | 351 ssl on; |
351 ... | 352 ... |
352 } | 353 } |
353 | 354 |
354 server { | 355 server { |
355 listen 443; | 356 listen 443; |
356 server_name www.example.org; | 357 server_name www.example.org; |
357 ssl on; | 358 ssl on; |
358 ... | 359 ... |
359 } | 360 } |
360 </programlisting> | 361 </programlisting> |
361 </para> | 362 </para> |
362 | 363 |
408 </para> | 409 </para> |
409 | 410 |
410 <para> | 411 <para> |
411 Чтобы использовать SNI в nginx, соответствующая поддержка должна | 412 Чтобы использовать SNI в nginx, соответствующая поддержка должна |
412 присутствовать как в библиотеке OpenSSL, использованной при сборке | 413 присутствовать как в библиотеке OpenSSL, использованной при сборке |
413 бинарного файла nginx, так и в библиотеке, подгружаемой в момент | 414 бинарного файла nginx, так и в библиотеке, подгружаемой в момент работы. |
414 работы. | |
415 OpenSSL поддерживает SNI начиная с версии 0.9.8f, если она была | 415 OpenSSL поддерживает SNI начиная с версии 0.9.8f, если она была |
416 собрана с опцией конфигурации <nobr>“--enable-tlsext”.</nobr> | 416 собрана с опцией конфигурации <nobr>“--enable-tlsext”.</nobr> |
417 Начиная с OpenSSL 0.9.8j эта опция включена по умолчанию. | 417 Начиная с OpenSSL 0.9.8j эта опция включена по умолчанию. |
418 Если nginx был собран с поддержкой SNI, то при запуске nginx с ключом | 418 Если nginx был собран с поддержкой SNI, то при запуске nginx с ключом |
419 “-V” об этом сообщается: | 419 “-V” об этом сообщается: |
420 | 420 |
421 <programlisting> | 421 <programlisting> |
422 $ nginx -V | 422 $ nginx -V |
423 ... | 423 ... |
424 TLS SNI support enabled | 424 TLS SNI support enabled |
442 | 442 |
443 <para> | 443 <para> |
444 <list type="bullet"> | 444 <list type="bullet"> |
445 | 445 |
446 <listitem> | 446 <listitem> |
447 Статус поддержки SNI отображается по ключу “-V” | 447 Статус поддержки SNI отображается по ключу “-V” |
448 начиная с версий 0.8.21 и 0.7.62. | 448 начиная с версий 0.8.21 и 0.7.62. |
449 </listitem> | 449 </listitem> |
450 | 450 |
451 <listitem> | 451 <listitem> |
452 Параметр <literal>ssl</literal> директивы | 452 Параметр <literal>ssl</literal> директивы |