1
00:00:00,000 --> 00:00:04,781
[MUSIC]

2
00:00:04,781 --> 00:00:09,377
В предыдущей лекции мы узнали о HTTPS и о том, как они могут осуществлять

3
00:00:09,377 --> 00:00:13,141
безопасную связь между клиентом и сервером.

4
00:00:13,141 --> 00:00:17,960
Мы также немного узнали о криптографии,

5
00:00:17,960 --> 00:00:21,700
достаточно, чтобы понять, как работает HTTPS.

6
00:00:21,700 --> 00:00:24,800
Для того, чтобы настроить наш HTTP-сервер,

7
00:00:24,800 --> 00:00:28,500
нам нужно получить открытый ключ и сертификат.

8
00:00:28,500 --> 00:00:34,650
Теперь в этом упражнении мы настроим наш сервер MuniCT для использования HTTPS.

9
00:00:34,650 --> 00:00:38,940
Итак, давайте продолжим, сначала сгенерировать ключ и

10
00:00:38,940 --> 00:00:42,130
сертификат, который мы можем использовать для нашего сервера, а

11
00:00:42,130 --> 00:00:47,240
затем изменить наше экспресс-приложение для поддержки HTTPS.

12
00:00:49,060 --> 00:00:53,310
Чтобы начать работу с этим упражнением, перейдите в папку сервера MuSTRION.

13
00:00:53,310 --> 00:00:57,230
А затем в вашем терминале или командном окне, а

14
00:00:57,230 --> 00:01:02,200
затем перейдите в папку bin внутри папки сервера UniGate.

15
00:01:02,200 --> 00:01:05,440
И в папке bin вы увидите файл с именем www.

16
00:01:05,440 --> 00:01:09,520
Это папка, в которой мы собираемся сгенерировать наш закрытый ключ, а

17
00:01:09,520 --> 00:01:12,310
затем генерировать сертификат для

18
00:01:12,310 --> 00:01:18,840
нашего HTTPS сервера с помощью инструмента командной строки под названием OpenSSL.

19
00:01:18,840 --> 00:01:24,320
Теперь OpenSSL обычно устанавливается на компьютерах Mac OS по умолчанию.

20
00:01:24,320 --> 00:01:31,030
Для компьютеров с Windows вам может потребоваться загрузить и установить OpenSSL явно.

21
00:01:31,030 --> 00:01:35,780
Теперь я предоставил пару ссылок в инструкциях для вас, чтобы пойти и

22
00:01:35,780 --> 00:01:37,550
получить OpenSSL.

23
00:01:37,550 --> 00:01:41,897
Я также предоставил вам веб-сайт, на котором вы можете генерировать самозаверяющий закрытый

24
00:01:41,897 --> 00:01:43,430
ключ и сертификат.

25
00:01:43,430 --> 00:01:44,960
Так что давайте поспешим взглянем на это.

26
00:01:45,960 --> 00:01:49,440
Если вы используете компьютер с Windows и

27
00:01:49,440 --> 00:01:52,080
если у вас нет OpenSSL уже установлен.

28
00:01:52,080 --> 00:01:56,120
Затем эта ссылка предоставляет двоичные файлы для

29
00:01:56,120 --> 00:02:00,300
OpenSSL, которые вы можете скачать и установить на вашем компьютере с Windows.

30
00:02:00,300 --> 00:02:06,050
Таким образом, эта ссылка приведена в инструкциях для данного упражнения.

31
00:02:06,050 --> 00:02:08,720
Так что зайдя туда,

32
00:02:08,720 --> 00:02:14,145
вы найдете несколько загрузок сторонних

33
00:02:14,145 --> 00:02:19,742
дистрибутивов OpenSSL, связанных с OpenSSL, которые вы можете скачать и установить на свой компьютер.

34
00:02:19,742 --> 00:02:24,730
Поэтому установите один из них, чтобы продолжить

35
00:02:24,730 --> 00:02:29,030
это упражнение, если у вас нет OpenSSL уже на вашем компьютере.

36
00:02:30,200 --> 00:02:35,330
Теперь, также если вы хотите другой способ

37
00:02:36,410 --> 00:02:40,410
генерации вашего закрытого ключа и сертификата.

38
00:02:40,410 --> 00:02:45,240
Вот статья в блоге, ссылка на которую я уже предоставил в инструкции, в

39
00:02:45,240 --> 00:02:49,990
которой также объясняется, как настроить компьютер Windows с помощью

40
00:02:51,410 --> 00:02:55,990
OpenSSL, а также создать закрытый ключ и сертификат.

41
00:02:55,990 --> 00:03:01,140
Таким образом, выполните следующие действия, чтобы настроить ваш компьютер Windows для

42
00:03:01,140 --> 00:03:05,330
создания закрытого ключа и сертификата.

43
00:03:05,330 --> 00:03:09,960
Теперь, если вы не хотите устанавливать OpenSSL, то вот ссылка на

44
00:03:09,960 --> 00:03:14,610
сайт, который позволяет вам генерировать

45
00:03:14,610 --> 00:03:19,420
там самоподписанный SSL-сертификат и ключ, как вы видите здесь.

46
00:03:19,420 --> 00:03:22,900
Таким образом, ссылка на этот сайт также приведена в инструкции.

47
00:03:22,900 --> 00:03:27,690
Таким образом, вы можете использовать сервер для создания SSL-сертификата и

48
00:03:27,690 --> 00:03:29,930
ключа для вашего компьютера с Windows.

49
00:03:29,930 --> 00:03:32,330
Таким образом, любой из этих подходов может быть использован для

50
00:03:32,330 --> 00:03:38,720
генерации закрытого ключа и сертификата для вашего компьютера с Windows.

51
00:03:38,720 --> 00:03:41,320
Поскольку я работаю на машине OSX,

52
00:03:41,320 --> 00:03:47,580
я собираюсь сгенерировать свой закрытый ключ и сертификат с помощью OpenSSL.

53
00:03:47,580 --> 00:03:52,858
Поэтому, перейдя к терминалу, позвольте мне ввести openssl genrsa

54
00:03:52,858 --> 00:03:59,249
1024, что означает, что я собираюсь генерировать закрытый ключ размером 1024.

55
00:03:59,249 --> 00:04:04,400
Поэтому я собираюсь поместить это в файл с именем private key, и

56
00:04:04,400 --> 00:04:10,590
как только это будет сгенерировано, тогда мы сгенерируем соответствующий файл cert.csr,

57
00:04:10,590 --> 00:04:16,340
чтобы он сказал openssl req request.

58
00:04:16,340 --> 00:04:21,398
Поэтому мы запрашиваем новый сертификат

59
00:04:21,398 --> 00:04:27,839
с ключом private.key, и он сгенерирует его.

60
00:04:32,283 --> 00:04:35,530
Cert.csr здесь.

61
00:04:35,530 --> 00:04:40,440
Теперь, когда вы создаете cert.csr, он придумает несколько вопросов для

62
00:04:40,440 --> 00:04:42,378
вас, чтобы заполнить.

63
00:04:42,378 --> 00:04:44,700
Вы можете принять значения по умолчанию или

64
00:04:44,700 --> 00:04:48,400
вы можете заполнить свои собственные значения, если вы выбрали это.

65
00:04:48,400 --> 00:04:52,120
Это не имеет значения, потому что этот сертификат мы используем только внутри нашего

66
00:04:52,120 --> 00:04:55,730
компьютера для тестирования нашего HTTPS сервера.

67
00:04:55,730 --> 00:04:58,156
Итак, позвольте мне заполнить некоторые детали.

68
00:05:02,293 --> 00:05:06,286
Я оставлю там несколько вещей пустыми.

69
00:05:06,286 --> 00:05:09,380
И это будет работать отлично,

70
00:05:09,380 --> 00:05:13,900
не имеет значения, заполняете ли вы эту информацию или нет.

71
00:05:13,900 --> 00:05:19,679
Поэтому, как только вы сделаете, что ваш cert.csr сгенерирован и

72
00:05:19,679 --> 00:05:26,834
из этого они будут генерировать сертификат распространения,

73
00:05:26,834 --> 00:05:31,651
чтобы мы напечатали в командной строке

74
00:05:31,651 --> 00:05:37,295
openssl x509 -req -in cert.csr -signkey

75
00:05:37,295 --> 00:05:42,134
private.key -out certificate.pem.

76
00:05:42,134 --> 00:05:47,052
Таким образом, это сгенерирует сертификат для

77
00:05:47,052 --> 00:05:52,111
нас, и поэтому, как только вы выполните эти шаги,

78
00:05:52,111 --> 00:05:55,623
когда вы посмотрите на свою папку,

79
00:05:55,623 --> 00:06:00,961
вы увидите, что у вас есть private.key,

80
00:06:00,961 --> 00:06:07,255
cert.csr и certificate.pem там.

81
00:06:07,255 --> 00:06:11,205
Это потребуется для настройки нашего HTTPS-сервера.

82
00:06:11,205 --> 00:06:17,375
Итак, теперь, чтобы настроить HTTPS-сервер, давайте перейдем к нашему редактору.

83
00:06:17,375 --> 00:06:21,755
В редакторе мы перейдем в эту папку bin здесь.

84
00:06:21,755 --> 00:06:25,135
И в папке bin вы увидите этот файл под названием www.

85
00:06:25,135 --> 00:06:30,550
Мы кратко рассмотрели этот файл в одном из предыдущих упражнений.

86
00:06:30,550 --> 00:06:36,296
Теперь, перейдя в этот файл, мы теперь

87
00:06:36,296 --> 00:06:41,704
также импортируем основной модуль HTTPS, поэтому

88
00:06:41,704 --> 00:06:49,776
мы скажем, HTTPS требует HTTPS, и

89
00:06:49,776 --> 00:06:53,010
нам также потребуется модуль файловой системы.

90
00:06:53,010 --> 00:06:57,160
Модуль файловой системы уже был обнаружен ранее

91
00:06:57,160 --> 00:06:58,560
в одном из упражнений.

92
00:06:58,560 --> 00:07:01,440
Так что мы импортируем оба этих.

93
00:07:01,440 --> 00:07:07,180
А затем, спускаясь сюда, мы настроим номер порта, на котором

94
00:07:07,180 --> 00:07:13,200
будет запущен наш HTTPS-сервер, поэтому мы скажем app.set и

95
00:07:13,200 --> 00:07:17,160
скажем SecPort.

96
00:07:17,160 --> 00:07:22,370
Таким образом, мы собираемся настроить переменную здесь под названием безопасный порт, а

97
00:07:22,370 --> 00:07:26,890
затем я инициализирую это для порта+443.

98
00:07:26,890 --> 00:07:29,998
Теперь, почему я использую этот порт+443?

99
00:07:29,998 --> 00:07:35,881
На стандартном сервере, если ваш сервер выступает в качестве веб-сервера,

100
00:07:35,881 --> 00:07:42,890
ваш протокол HTTP будет работать на порту номер 80 на вашем сервере.

101
00:07:42,890 --> 00:07:47,049
И безопасный HTTP будет работать на порту номер 443.

102
00:07:48,090 --> 00:07:54,070
Теперь вы, как правило, не хотите использовать эти зарезервированные порты

103
00:07:54,070 --> 00:08:00,170
в приложении для разработки, но мы делаем это в этом курсе.

104
00:08:00,170 --> 00:08:02,250
Вместо этого, как вы видели ранее,

105
00:08:02,250 --> 00:08:08,170
мы настроили номер порта 3000, где работает наш HTTP-сервер.

106
00:08:08,170 --> 00:08:15,481
Поэтому я буду запускать HTTPS-сервер, на порту номер 3443.

107
00:08:15,481 --> 00:08:18,311
Итак, 3000 плюс 443.

108
00:08:18,311 --> 00:08:22,550
Поэтому я объявляю этот безопасный порт.

109
00:08:22,550 --> 00:08:30,748
Как порт+443, поэтому наш HTTPS сервер будет работать на порту номер 443.

110
00:08:30,748 --> 00:08:35,296
Я все равно буду запускать HTTP-сервер в порту 3000,

111
00:08:35,296 --> 00:08:40,696
мы уже создали HTTP-сервер здесь, в WWW, или, скорее,

112
00:08:40,696 --> 00:08:46,220
это автоматически генерируется экспресс-генератором.

113
00:08:46,220 --> 00:08:49,890
Теперь, так как HTTP-сервер уже настроен,

114
00:08:49,890 --> 00:08:54,290
мы собираемся настроить HTTPS-сервер.

115
00:08:55,810 --> 00:09:02,460
Поэтому, чтобы настроить HTTPS-сервер, сразу после того, как мы настроим HTTP-сервер.

116
00:09:02,460 --> 00:09:06,410
Теперь причина, по которой я все еще буду запускать HTTP-сервер, заключается в том, что,

117
00:09:06,410 --> 00:09:12,120
если я получу запрос на порт HTTP-сервера,

118
00:09:12,120 --> 00:09:16,420
этот запрос будет перенаправлен на сервер HTTPS.

119
00:09:16,420 --> 00:09:23,070
Таким образом, мой сервер будет только запрос на обслуживание, поступающий на порты HTTPS.

120
00:09:23,070 --> 00:09:27,750
Но если случайно кто-нибудь получит доступ к серверу через порт HTTP,

121
00:09:27,750 --> 00:09:31,070
я перенаправлю этот запрос на порт HTTPS.

122
00:09:31,070 --> 00:09:33,270
Мы сделаем это немного позже.

123
00:09:33,270 --> 00:09:36,316
Во-первых, давайте настроим HTTPS-сервер.

124
00:09:36,316 --> 00:09:40,665
Поэтому, чтобы настроить HTTPS-сервер, прямо здесь,

125
00:09:40,665 --> 00:09:46,060
я объявлю несколько вариантов здесь для моего HTTPS-сервера.

126
00:09:46,060 --> 00:09:51,740
Теперь напомним, что для HTTPS-сервера нам нужно настроить закрытый ключ и

127
00:09:51,740 --> 00:09:56,670
сертификат, который будет использовать мой HTTPS-сервер.

128
00:09:56,670 --> 00:10:01,200
Поэтому в параметрах я собираюсь указать ключ, а

129
00:10:01,200 --> 00:10:07,832
затем я буду использовать файловую систему, а затем я скажу: ReadFileSync.

130
00:10:09,340 --> 00:10:16,250
Поэтому я буду читать этот файл синхронно, так что я закончу чтение в файле,

131
00:10:16,250 --> 00:10:21,290
прежде чем я смогу настроить свой HTTPS-сервер.

132
00:10:21,290 --> 00:10:25,862
Поэтому я собираюсь прочитать этот файл из __dirname.

133
00:10:25,862 --> 00:10:30,958
Вы уже знаете, почему я использую __dirname из предыдущих

134
00:10:30,958 --> 00:10:36,710
упражнений, где мы видели, как используется пять системных модулей.

135
00:10:36,710 --> 00:10:40,370
И тогда, так что я скажу __dirname+.

136
00:10:40,370 --> 00:10:49,570
Итак, здесь мы поставляем путь к private.key.

137
00:10:49,570 --> 00:10:54,346
Теперь напомним, что этот www находится в папке bin.

138
00:10:54,346 --> 00:10:57,710
И private.key также находится в папке bin,

139
00:10:57,710 --> 00:11:03,200
поэтому я собираюсь сказать dirname+ это, поэтому это укажет

140
00:11:03,200 --> 00:11:08,170
модулю чтения файловой системы, что файл должен быть

141
00:11:08,170 --> 00:11:13,440
прочитан из этого каталога bin, из этого файла private.key здесь.

142
00:11:14,730 --> 00:11:18,360
Теперь также, мы прочитаем в сертификате здесь.

143
00:11:18,360 --> 00:11:21,585
Так что скажем, cert fs.readFileSync.

144
00:11:21,585 --> 00:11:26,053
Таким образом, он будет синхронно читать файл, что означает, что

145
00:11:26,053 --> 00:11:33,050
файл будет прочитан полностью, прежде чем вы перейдете к следующему шагу здесь.

146
00:11:33,050 --> 00:11:40,340
И файл, который нам нужно прочитать, также __dirname+.

147
00:11:40,340 --> 00:11:47,865
И скажем, /certificate.pem, который мы сгенерировали ранее.

148
00:11:51,407 --> 00:11:56,697
И это должна быть запятая, и я не должен ставить точку с запятой,

149
00:11:56,697 --> 00:12:02,740
потому что это объект JavaScript, который мы определили, имеет параметры.

150
00:12:02,740 --> 00:12:09,070
Поэтому, как только мы определим объект JavaScript, тогда давайте настроим безопасный сервер.

151
00:12:09,070 --> 00:12:15,407
Итак, мы скажем var SecureServer https.

152
00:12:15,407 --> 00:12:21,410
Напомним, что теперь мы будем использовать https, а затем мы скажем CreateServer.

153
00:12:21,410 --> 00:12:27,611
Так что напомним, что для HTTP, мы настроили наш сервер вот так.

154
00:12:27,611 --> 00:12:32,540
Для безопасного сервера мы собираемся создать это, сказав,

155
00:12:32,540 --> 00:12:37,859
var SecureServer Https.CreateServer, а затем мы поставим

156
00:12:37,859 --> 00:12:44,161
параметры, которые мы только что настроили, а затем вторая часть приложения здесь.

157
00:12:44,161 --> 00:12:48,026
Таким образом, мой SecureServer хорошо,

158
00:12:48,026 --> 00:12:54,410
также будет доступен для моего приложения для доступа.

159
00:12:54,410 --> 00:13:00,301
Теперь внизу, я собираюсь настроить

160
00:13:00,301 --> 00:13:06,044
SecureServer.Listen на номер порта,

161
00:13:11,990 --> 00:13:13,530
SecPort.

162
00:13:13,530 --> 00:13:17,950
Напомним, что здесь мы сделали app.set SecPort, поэтому

163
00:13:17,950 --> 00:13:23,840
мы установили это значение на номер безопасного порта.

164
00:13:23,840 --> 00:13:27,280
И затем внизу, мы говорим app.get.

165
00:13:27,280 --> 00:13:32,013
Таким образом, это означает, что это значение, которое мы

166
00:13:32,013 --> 00:13:36,470
настроили ранее, будет доступно для

167
00:13:36,470 --> 00:13:41,205
нас

168
00:13:41,205 --> 00:13:45,522
, чтобы настроить наш прослушивающий порт для нашего сервера app.get SecPort, а

169
00:13:45,522 --> 00:13:52,059
затем предоставить функцию обратного вызова здесь.

170
00:13:55,029 --> 00:13:58,438
И внутри этой функции обратного вызова мы скажем,

171
00:14:03,514 --> 00:14:11,715
console.log Server прослушивает порт.

172
00:14:21,317 --> 00:14:26,931
Давайте сделаем безопасный сервер, прослушивая порт,

173
00:14:28,697 --> 00:14:32,448
а затем, как только мы настроим SecureServer,

174
00:14:32,448 --> 00:14:38,690
тогда нам нужно, См., SecureServer включен.

175
00:14:38,690 --> 00:14:45,170
Поэтому, если SecureServer получает событие ошибки,

176
00:14:45,170 --> 00:14:51,790
то нам понравится OnError, который настроен ниже, чтобы обработать это.

177
00:14:51,790 --> 00:14:55,520
И тогда мы скажем: «SecureServer.on».

178
00:14:59,786 --> 00:15:04,428
Прослушивание, поэтому, если вы получите событие прослушивания,

179
00:15:04,428 --> 00:15:07,950
то мы вызовем OnListening.

180
00:15:07,950 --> 00:15:11,100
Теперь, где настроены эти OnError и OnListening?

181
00:15:11,100 --> 00:15:14,830
Если вы спуститесь в код здесь, внизу.

182
00:15:14,830 --> 00:15:20,920
Вы указываете эти две функции, которые OnError функционируют здесь,

183
00:15:20,920 --> 00:15:24,540
а затем функцию OnListening здесь.

184
00:15:24,540 --> 00:15:30,140
Таким образом, мы будем использовать эти две функции для настройки нашего сервера здесь.

185
00:15:30,140 --> 00:15:32,320
Таким образом, с этими изменениями

186
00:15:32,320 --> 00:15:38,180
мой сервер теперь настроен на запуск SecureServer с номером порта 443.

187
00:15:38,180 --> 00:15:44,290
Мы уже настроили стандартный HTTP-сервер здесь.

188
00:15:44,290 --> 00:15:51,860
Поэтому, как только мы сделаем эти два, наше следующее обновление будет в файле app.js.

189
00:15:51,860 --> 00:15:58,313
Таким образом, перейдя в файл app.js Что я собираюсь сделать, это настроить этот

190
00:15:58,313 --> 00:16:04,729
сервер таким образом, чтобы он перенаправлял любой трафик, поступающий на небезопасный порт.

191
00:16:04,729 --> 00:16:09,780
Это номер порта 3,000, он перенаправит этот запрос на безопасный порт.

192
00:16:09,780 --> 00:16:16,285
Поэтому, чтобы сделать это, позвольте мне настроить промежуточное программное обеспечение сразу после того, как мы объявим app.express.

193
00:16:16,285 --> 00:16:21,541
Итак, здесь мы скажем, app.all, так что это означает, что для

194
00:16:21,541 --> 00:16:27,090
всех запросов независимо от того, какой путь в запросе.

195
00:16:27,090 --> 00:16:33,118
Собственный запрос приходит, я собираюсь перенаправить это на,

196
00:16:35,885 --> 00:16:39,582
поэтому мы скажем rec, res, next, и

197
00:16:39,582 --> 00:16:44,156
функция обратного вызова определяется здесь.

198
00:16:44,156 --> 00:16:51,820
И так мы, объявим функцию внутри здесь.

199
00:16:51,820 --> 00:16:58,529
И скажем, если req.secure.

200
00:16:58,529 --> 00:17:04,215
Итак, что означает, что если входящий запрос уже является безопасным запросом,

201
00:17:04,215 --> 00:17:06,520
так как мы это знаем?

202
00:17:06,520 --> 00:17:10,591
Если входящий запрос уже является безопасным запросом, то

203
00:17:10,591 --> 00:17:15,020
объект запроса будет нести этот флаг под названием secure, который уже будет установлен в true.

204
00:17:16,121 --> 00:17:19,410
Если входящий запрос не является безопасным портом, а

205
00:17:19,410 --> 00:17:24,960
вместо этого приходит на небезопасный порт, то write.secure не будет установлен.

206
00:17:24,960 --> 00:17:28,331
Так вот, о чем я позабочусь.

207
00:17:28,331 --> 00:17:31,511
Если он уже идет к защищенному порту, я просто собираюсь идти вперед,

208
00:17:31,511 --> 00:17:35,110
ничего не делая, потому что он уже приходит к безопасному порту.

209
00:17:35,110 --> 00:17:38,514
Так что я могу просто сказать, следующий.

210
00:17:39,586 --> 00:17:44,320
В противном случае, так скажем, вернитесь следующим.

211
00:17:44,320 --> 00:17:48,678
В противном случае, так что иначе произойдет,

212
00:17:52,360 --> 00:17:55,780
Когда он приходит к небезопасному порту.

213
00:17:55,780 --> 00:17:59,850
Поэтому в этом случае я скажу res.redirect.

214
00:17:59,850 --> 00:18:03,920
Таким образом, доступен метод перенаправления,

215
00:18:03,920 --> 00:18:09,390
который перенаправляет входящий запрос на другой URL.

216
00:18:09,390 --> 00:18:15,960
Итак, я перенаправлю этот небезопасный запрос на https://.

217
00:18:15,960 --> 00:18:24,950
Поэтому я перенаправляю этот запрос на имя req.host.

218
00:18:24,950 --> 00:18:27,720
Таким образом, запрос уже будет нести имя хоста.

219
00:18:27,720 --> 00:18:31,083
Итак, потому что это приходит на один и тот же сервер, поэтому

220
00:18:31,083 --> 00:18:33,657
я перенаправляю на тот же сервер.

221
00:18:33,657 --> 00:18:38,428
И тогда мы скажем +,

222
00:18:41,726 --> 00:18:44,860
; + app.get.

223
00:18:44,860 --> 00:18:52,468
Теперь напомним, что мы уже настроили безопасный порт в app.get там.

224
00:18:52,468 --> 00:19:00,861
Таким образом, мы скажем app.get SecPort + req.url.

225
00:19:00,861 --> 00:19:05,757
Теперь этот req.url будет содержать остальную часть пути

226
00:19:05,757 --> 00:19:10,080
, кроме имени хоста и номера порта.

227
00:19:10,080 --> 00:19:12,943
Поэтому, если вы скажете локальный хост: 3000,

228
00:19:12,943 --> 00:19:17,685
этот локальный хост: 3000 будет покрыт первой частью, и

229
00:19:17,685 --> 00:19:24,110
это будет перенаправлено на локальный хост: 3443 этой конфигурацией здесь.

230
00:19:24,110 --> 00:19:29,410
И затем, остальная часть, req.url будет содержать фактический путь на сервере.

231
00:19:29,410 --> 00:19:34,220
Итак, мы просто добавляем его к пути перенаправления, и

232
00:19:34,220 --> 00:19:39,390
это путь, на который я собираюсь перенаправить входящее сообщение запроса.

233
00:19:39,390 --> 00:19:42,200
Поэтому, как только я

234
00:19:42,200 --> 00:19:46,630
перенаправлю входящее сообщение запроса, мое сообщение запроса будет перенаправлено на защищенный порт.

235
00:19:46,630 --> 00:19:50,240
И последнее изменение может res.redirect,

236
00:19:50,240 --> 00:19:54,470
мы добавим написанный код состояния как 307.

237
00:19:54,470 --> 00:19:59,084
307 здесь означает, что целевой ресурс временно находится под

238
00:19:59,084 --> 00:20:00,890
другим URL-адресом.

239
00:20:00,890 --> 00:20:04,990
И пользовательский агент не должен изменять метод запроса, если он

240
00:20:04,990 --> 00:20:08,120
реформируется в автоматическом перенаправлении на этот URL-адрес.

241
00:20:08,120 --> 00:20:11,880
Итак, я буду ожидать, что пользовательский агент повторит попытку

242
00:20:11,880 --> 00:20:16,780
с тем же методом, который они использовали для исходной конечной точки.

243
00:20:16,780 --> 00:20:21,820
Вот и то, что изменение, которое мне нужно сделать в файле app.js.

244
00:20:21,820 --> 00:20:26,452
Таким образом, изменив app.js и www, а

245
00:20:26,452 --> 00:20:30,548
также сгенерировав ключ и сертификат,

246
00:20:30,548 --> 00:20:35,751
мы теперь можем сохранить изменения и перейти и запустить наш сервер.

247
00:20:36,864 --> 00:20:41,606
Перейдите в терминал или окно команд, убедитесь, что вы

248
00:20:41,606 --> 00:20:46,340
снова находитесь в папке ConfusionServer, а затем запустите сервер.

249
00:20:46,340 --> 00:20:49,443
Поэтому я нахожусь на терминале, набирающем npm start.

250
00:20:52,473 --> 00:20:57,295
И ваш сервер будет работать, и вы также заметите, что мы печатаем

251
00:20:57,295 --> 00:21:01,848
здесь, говоря: Secure Server прослушивает порт 3443 здесь.

252
00:21:01,848 --> 00:21:09,322
Чтобы акцентировать безопасный сервер, перейдите в браузер, такой как Chrome.

253
00:21:09,322 --> 00:21:13,648
А затем позвольте мне сначала получить доступ к защищенному серверу на

254
00:21:13,648 --> 00:21:19,750
localhost: 3443, где работает мой безопасный сервер.

255
00:21:19,750 --> 00:21:29,490
И обратите внимание, что когда я попробую https://localhost3443 в браузере,

256
00:21:29,490 --> 00:21:34,170
он придет с этим сообщением, говорящим, что ваше соединение не является частным.

257
00:21:34,170 --> 00:21:37,670
Очевидно, потому что сертификат, который мы используем прямо сейчас,

258
00:21:37,670 --> 00:21:39,640
является самозаверяющим сертификатом.

259
00:21:39,640 --> 00:21:44,770
И это не распознается Chrome как действительный сертификат.

260
00:21:44,770 --> 00:21:49,780
Но поскольку мы знаем, что мы делаем, мы можем согласиться с тем

261
00:21:49,780 --> 00:21:56,210
, что мы позволим перейти к этому конкретному серверу.

262
00:21:56,210 --> 00:22:00,630
Теперь я настоятельно рекомендую вам никогда не делать этого на

263
00:22:00,630 --> 00:22:04,110
любом сайте, который приходит с предложением.

264
00:22:04,110 --> 00:22:07,260
Мы делаем это специально в этом упражнении, потому что

265
00:22:07,260 --> 00:22:09,430
мы точно знаем, где находится сервер, и

266
00:22:09,430 --> 00:22:13,480
мы знаем, что мы явно настроили сервер сами.

267
00:22:13,480 --> 00:22:18,930
Но если какой-либо другой веб-сайт приходит с этим сообщением, я настоятельно

268
00:22:18,930 --> 00:22:24,750
советую вам не принимать предложение и перейти к серверу.

269
00:22:24,750 --> 00:22:31,840
Таким образом, вы должны вернуться в безопасное место, если вы когда-нибудь увидите это или на любом другом веб-сайте.

270
00:22:31,840 --> 00:22:36,360
Но поскольку мы знаем, что это наш собственный сервер, я собираюсь перейти к

271
00:22:36,360 --> 00:22:43,450
localhost здесь, и тогда вы увидите, что мы получаем доступ к серверу Express.

272
00:22:43,450 --> 00:22:45,900
А также вы заметите здесь

273
00:22:45,900 --> 00:22:51,280
, что ваш браузер показывает вам, что вы обращаетесь к небезопасному серверу.

274
00:22:51,280 --> 00:22:54,040
Когда вы нажмете на это, вы увидите сообщение

275
00:22:54,040 --> 00:22:57,160
о том, что ваше подключение к сайту не является безопасным.

276
00:22:57,160 --> 00:23:04,068
Но мы знаем, что, поскольку мы сами запускаем сервер, это нормально.

277
00:23:04,068 --> 00:23:08,860
Так вот как вы будете получать доступ к серверу HTTPS.

278
00:23:08,860 --> 00:23:14,338
Теперь позвольте мне попробовать получить доступ к тому же HTTP-серверу, но позвольте мне получить доступ к

279
00:23:16,040 --> 00:23:19,206
стандартному локальному хосту: 3000.

280
00:23:19,206 --> 00:23:24,625
Это место, где наш небезопасный сервер находится на обычном HTTP-сервере.

281
00:23:24,625 --> 00:23:30,190
Поэтому, когда я пытаюсь получить доступ к этому HTTP localhost: 3000,

282
00:23:30,190 --> 00:23:37,700
вы сразу увидите, что мой сервер перенаправит меня на безопасный сервер.

283
00:23:37,700 --> 00:23:41,850
Таким образом, ваш сервер, который мы только что настроили,

284
00:23:41,850 --> 00:23:46,740
убедитесь, что вы всегда будете получать доступ к серверу на его защищенном порту.

285
00:23:46,740 --> 00:23:50,040
Это также гарантирует тот факт, что, когда вы

286
00:23:50,040 --> 00:23:52,902
обмениваетесь, когда вы отправляете свои учетные данные и т. Д.,

287
00:23:52,902 --> 00:23:56,343
Весь обмен учетными данными в заголовке сообщения.

288
00:23:56,343 --> 00:24:01,863
А также при входе в систему с локальной аутентификацией все это делается

289
00:24:01,863 --> 00:24:07,910
безопасным образом в зашифрованном канале между клиентом и сервером.

290
00:24:07,910 --> 00:24:15,010
Итак, теперь мы настроили наш сервер, чтобы быть защищенным HTTPS сервером.

291
00:24:15,010 --> 00:24:18,090
С этим мы завершаем это упражнение.

292
00:24:18,090 --> 00:24:22,880
В этом упражнении мы узнали, как настроить безопасный HTTP-сервер или

293
00:24:22,880 --> 00:24:25,930
использовать протокол HTTPS.

294
00:24:25,930 --> 00:24:27,994
С этим мы завершаем это упражнение.

295
00:24:27,994 --> 00:24:34,230
Это хорошее время для вас сделать git фиксацию с сообщением, HTTPS.

296
00:24:34,230 --> 00:24:36,719
[ МУЗЫКА]