三、第四節 創建https服務

爲什麼要使用HTTPS服務

個人因素及安全原因

我們通過nodeJS來創建一個HTTP服務,爲什麼這裏要介紹HTPS服務呢?這主要與我們後面的例子有關,那麼我們後面的例子呢,會要調用這個瀏覽器的音頻設備和視頻設備,但這些設備呢,實際是涉及到了一個個人的隱私問題,那對於Chrome來說,他對這方面的檢查實際上是非常嚴格的,所以如果你不是HTTPS服務的話,那你想調用。打開攝像頭,或者是打開音頻設備,那他是不允許的。

https是未來的趨勢

是由於https本身也是未來的一個趨勢,目前基本上所有的網站都提供了HTTPS服務,所以呢,在這裏呢,我們也要向大家介紹一下如何使用https服務,那什麼是HTTPS功能可以簡單的理解啊,就是http+TSL/SSL;

什麼意思呢,就是http本身的內容是明文的,那我們要將這個明文的內容經過 加密進行傳輸,可能認爲 加密後的http就是https,當然並沒有那麼簡單啦,真正的https還要經過第三方的機構認證,拿到你的證書,知道你的公鑰和私鑰是什麼,對於客戶端來說 ,需要拿到你的公鑰,然後把內容進行加密,對於服務端來說需要有私鑰進行解密,這裏涉及到的內容很複雜,大家可以瞭解一下。我們這裏只要知道如何使用就可以了 。

首先客戶端要向服務端發送一個握手,

服務端收到請求之後要下發證書給客戶端,

那客戶端和服務端就要交換密鑰和協商加密算法,對於客戶端來說需要得到服務端的公鑰,服務端需要有這個私鑰,將這個客戶端加密的內容進行解密,第三步完成之後,我們就可以進行數據的傳輸了。以上就是https的一個基本原理。我們只做一個基本瞭解就可以了。

下面我通過nodeJS來 搭建一個https的服務。

生成HTTPS證書

這裏有幾點要主要,那麼第一點就是要生成https證書,那麼生成的證書有兩種,一種是私有的證書 ,另一種是認證的證書 ,私有證書就是我們自己產生的證書,這種證書對於瀏覽器來說一般是不認可的,如果是我們自己寫的應用程序,我們可以使用私有 證書。對於瀏覽器來說一般都是需要認證的證書。也就是 第三方機構,比如賽門鐵克頒發的證書。

買了域名之後,從域名的廠商那經過它的代理,去購買這個證書。

引入HTTPS模塊

指定證書位置,並創建HTTPS服務

也就是說我們生成的證書,要存放到一個固定的位置,這樣我們在創建HTTPS的時候,啓動HTTPS服務找到這個位置,它就可以 把這個服務啓動起來了。 

下面我實際操作一下

創建一個文件夾htts_server,創建文件server.js

將證書先拷貝過來

1557605_www.learningrtc.cn.key

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAgECrBRI9h/EE1QhLQBIxqeZFAFh4obAm7jGIR3QMUimHxR5X
SRmkVKbkMMQLXtZPG/vgva8SmUSSbdOTvOXXjL3cBet8gRuQ2sxlypMDJbkawPyr
Gct5T497op0jvLCxX6E3LJOe8AF22bVRYL5oMQFxZV+1cfTDYGDHZKPowJbQmtwp
JknKnD3f2jp48eJ2s+5NyZdQB2O48SGkRiwXfmosTmcNgiXR46WIvvhkbVQSKMOZ
It1lZtZXp7B6NxllY1D+ayG7LbaW6Y2tldFMuXrNRnK5pKfXuAVE8qKSZBqqwBdr
lmcWQfAnCZBXHjlHwmN7+TFh99dQcAWmfhp4AQIDAQABAoIBADAChUKnulrqMWnh
6fF5HhhAt/HSLI4yV9BwwFgnK/mRzF5Q5lHaBHcf5moO6Ua+KO0L0+yN3gN79Oih
/DsJOzBXXkblCT13aTlOrIgxkksLyOUXcKF+VtIenySXeGpJJozq17GbLTMhCTGk
O2tgu7YkmSNeuZiIDJ9Gez3EUfvNrexlpIndjHIiyMh6Hv2TmGofZsX48Sl6ocgH
bGlgnLEExJCacX1KyWpL2QraV9jhF7WCXgEPLWcOq4r+aKkMpP/v1gZKPNMHq0OM
7ytCDrcvChnxG8azWsiXuptCqillm3QZSItzUBPjMFUzbBairikHdtPdzuzm6B+a
F8T3A1UCgYEA41mTEVrzY0EWiUo5WWFBDndS/3WdIRpW3N9NhFG+JeIHQJf20bXV
egUFj5d2eR7H2pjRYRuhCfdeIXZ1kkZchAfrYoMoI/dKbCl1DtG1+au/Id+UUf1Z
nczbRERD3Ijx/1F+c8nHLutfG1/d3J+8A3f/61YnWuhVw9HAyUTWSB8CgYEAkGop
5KhpMZvrvBTHhIP82Tf3DQhmbGIfLj+KuJFRfK5UZlGzFtR17CYnT4mqMM/A6u6v
He++rz8M/zwtRWwN+DbATKF2pEDiNCu6+Duq8MkS5wxNR2azm170gC+Cf21IEeVG
0/VH08/0ChVIp6flw6Q0zBIcwABzQNBKsYLdu98CgYEA0mPKXX01Ttyk5lfxymzd
r21tOUq2JjQhvjRHn/Ola5lH7Na0ak1DSK/s/XzE/kEl4X0aBitzU62/RmhBVSQX
6XcKtRd6xg3KqV2UHiqjpHDzZ31n3Jf/nrA9GWezBRsWF5hq1Owdj6XxVXvZ7JlF
fFBIXJhVwyLOe3BYX+l8AzECgYBZ3ibpyz+DBqOA7HFobnZXenM74gFS6xC6SAJ8
broF27pb3fWTfG1RokCOR33oWDCWQigpefrwtUzSPFFzxRVAZFnwlf3tow7hJmF4
fjEXHBmuPEKO70NPqZx/dJFB2PCjaklUN2wWTG9yIuKOqnXZ9IKCh7bqaJ1QNQ52
PpjbgwKBgQCTT7sbZynbNUWoQ303gM1DZP0Yl7c7OnOucbrP+pn13d4ipi7jdwiS
3yk0VU7+cn/yqkockt8UTLPRQ0tql5/o2ekENp8qHqsJ1hevlDHRxmD/H8RltJ6X
C6XKac6oWlJXee/3pUoixJFtFIMUl4cruf2A2HDd0l2CrBSVJCiMOA==
-----END RSA PRIVATE KEY-----

1557605_www.learningrtc.cn.pem

-----BEGIN CERTIFICATE-----
MIIFmTCCBIGgAwIBAgIQA/0Ssnj2KNvPpAAwE8RHPTANBgkqhkiG9w0BAQsFADBu
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
RFYgVExTIENBIC0gRzEwHhcNMTgxMTI3MDAwMDAwWhcNMTkxMTI3MTIwMDAwWjAd
MRswGQYDVQQDExJ3d3cubGVhcm5pbmdydGMuY24wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQCAQKsFEj2H8QTVCEtAEjGp5kUAWHihsCbuMYhHdAxSKYfF
HldJGaRUpuQwxAte1k8b++C9rxKZRJJt05O85deMvdwF63yBG5DazGXKkwMluRrA
/KsZy3lPj3uinSO8sLFfoTcsk57wAXbZtVFgvmgxAXFlX7Vx9MNgYMdko+jAltCa
3CkmScqcPd/aOnjx4naz7k3Jl1AHY7jxIaRGLBd+aixOZw2CJdHjpYi++GRtVBIo
w5ki3WVm1lensHo3GWVjUP5rIbsttpbpja2V0Uy5es1Gcrmkp9e4BUTyopJkGqrA
F2uWZxZB8CcJkFceOUfCY3v5MWH311BwBaZ+GngBAgMBAAGjggKCMIICfjAfBgNV
HSMEGDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUGCuoNOqYS8DF
1dd4XIP/YilDUJEwLQYDVR0RBCYwJIISd3d3LmxlYXJuaW5ncnRjLmNugg5sZWFy
bmluZ3J0Yy5jbjAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMEwGA1UdIARFMEMwNwYJYIZIAYb9bAECMCowKAYIKwYBBQUHAgEW
HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQIBMH0GCCsGAQUF
BwEBBHEwbzAhBggrBgEFBQcwAYYVaHR0cDovL29jc3AuZGNvY3NwLmNuMEoGCCsG
AQUFBzAChj5odHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRW5jcnlwdGlvbkV2
ZXJ5d2hlcmVEVlRMU0NBLUcxLmNydDAJBgNVHRMEAjAAMIIBBAYKKwYBBAHWeQIE
AgSB9QSB8gDwAHUAu9nfvB+KcbWTlCOXqpJ7RzhXlQqrUugakJZkNo4e0YUAAAFn
VArhKwAABAMARjBEAiBYzdYfv9uZCl7ItYugZ8rKwBdkl64L3Bo4hMyM2oLPdAIg
OOy3aJnqp31jGrtIG5u6hPfAWNkiBPfGQCEDeBsRhaYAdwCHdb/nWXz4jEOZX73z
bv9WjUdWNv9KtWDBtOr/XqCDDwAAAWdUCuH+AAAEAwBIMEYCIQD4eai+g9Dx4ZhW
h8+VDwRjrspTNycWeg0ehjf+p5NwBAIhAPQpUvUrdJp/KqLKz4TNnyJtU0ezPZdY
XGQVeYtwkDOQMA0GCSqGSIb3DQEBCwUAA4IBAQAZwr2CFBCmPw4H16UpsbEK4Wie
ldbsrBhRMX2bH47Sr2CQvAJLm2MODVDi7XtF1ZR1XmLQOiKsHNVXveDq5UJomWIn
NDkXxYPNMQzVB6WLxO9HZsM302CIrE4ds9PUWWZ8wVtyv6o/nqczu+uuyX0Vs0/J
dclkw7r3TntrPwgTj/3dCSBchdT33vdTGjnyc9Hz7gN0aU8Ksnzf7Vxm53lmk4t1
aHKYUDQtPle5MKNgg88fjCsrfMZAfpcR3GKfCSa3I4f4vhvsg2ap4fJsXKjHtOLN
8qfw7B8Qm5/PpsRzYHB+WEPkfwIKxR9gIifQEbNnSSCCl3GJVqH4c1HJcb1z
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
-----END CERTIFICATE-----

下面我們要寫一個服務程序 server.js

// 1、申明嚴格模式
'use strict'

// 2、引入 https 模塊
var https = require('https');
// 3、 引入文件模塊,讀取證書
var fs = require('fs');

// fs.readFileSync() 指從某處讀取文件
var options = {
  key  : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),
  cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')
}

// 4、創建 一個 https服務  options就是指我們證書
var app = https.createServer(options, function(req, res){
    // 返回請求頭
	res.writeHead(200, {'Content-Type': 'text/plain'});
    // 返回內容
	res.end('HTTPS:Hello World!\n');


}).listen(443, '0.0.0.0');

運行 node server.js  服務就啓動起來了

我們搜索一下443端口有沒有啓動

輸入 netstat  -ntpl | grep 443

我們看到端口已經啓動起來了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章