前情:
MediaDevices 的方法 enumerateDevices(): 請求一個可用的媒體輸入和輸出設備的列表
navigator.mediaDevices.enumerateDevices();js調用獲取媒體信息,瀏覽器不支持所以未獲取到。是因爲chrome需要https來訪問。
解決方法:虛擬機ubuntu需要生成本地的證書,key,pem,來實現https訪問。
1.openssl
沒安裝先安裝,可以看看有沒有/usr/lib/ssl
2.下面生成ca證書
創建一個你放證書的目錄:$ mkdir work/cert
將之前ssl下的文件 copy到新創建的證書目錄下:$ cp /usr/lib/ssl/misc/CA.sh .
繼續在work/cert目錄下 $ ./CA.sh -newca ---- newca是參數 有不同參數 按需要查詢使用
出來如下界面 輸入phrase的時候4-1024位 本地用簡單點就行
上面的成功後,目錄下生成demoCA裏面有一些文件
cacert.pem和private/cakey.pem分別爲ca根證書和ca證書私鑰 ----生成client的證書時會檢查
3 .生成服務器證書
1) 生成私鑰: openssl genrsa -des3 -out server.key 1024
2) 生成csr文件: openssl req -new -key server.key -out server.csr
3) 生成證書&簽名: openssl ca -in server.csr -out server.crt (出錯把demoCA下的index.txt刪了,再touch一個新的)
4.生成客戶端證書
1) 生成私鑰: openssl genrsa -des3 -out client.key 1024
2) 生成csr文件: openssl req -new -key client.key -out client.csr
3) 生成證書&簽名: openssl ca -in client.csr -out client.crt(出錯把demoCA下的index.txt刪了,再touch一個新的)
key : fs.readFileSync('./cert/server.key'),
cert: fs.readFileSync('./cert/server.crt'),
passphrase:'之前填寫的字符'
使用瀏覽器訪問本地 可使用https了