當我們使用谷歌瀏覽器呼叫麥克風,攝像頭,定位等許可權時,谷歌瀏覽器認為http連線是不安全的,要求使用https,於是拒絕了訪問。
但是我們是在本地測試,又沒有域名和SSL證書,所以只能生成一個證書檔案。
一、生成證書
1、開啟CMD,輸入以下命令:
keytool -genkey -alias tomcat -keyalg RSA -keystore D:\tomcat\tomcat.keystore -validity 36500
意思是:“D:\tomcat\tomcat.keystore”含義是將證書檔案儲存在F盤,證書檔名稱是tomcat.keystore ;“-validity 36500”含義是證書有效期,36500表示100年,預設值是90天。
2、接下來要輸入金鑰口令,由於是本地,我輸入了:123456
3、接下來要填寫一些必要資訊:
- “您的名字與姓氏是什麼?”
這是必填項,並且必須是TOMCAT部署主機的域名或者IP[如:abcom.com 或者 192.168.0.1],就是你將來要在瀏覽器中輸入的訪問地址
- “你的組織單位名稱是什麼?”、“您的組織名稱是什麼?”、“您所在城市或區域名稱是什麼?”、“您所在的州或者省份名稱是什麼?”、“該單位的兩字母國家程式碼是什麼?”
可以按照需要填寫也可以不填寫直接回車,最後一步在系統詢問“正確嗎?”時,對照輸入資訊,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的資訊。
4、輸入tomcat主密碼
輸入<tomcat>的主密碼,這項較為重要,會在tomcat配置檔案中使用,建議輸入與keystore的密碼一致,設定其它密碼也可以。
生成完成,可在指定目錄下找到證書檔案。
5、此時會報錯
Warning: JKS 金鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore D:\tomcat\tomcat.keystore -destkeystore D:\tomcat\tomcat.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。
按它提示的命令輸一遍就可以了。
二、配置Tomcat
1、修改server.xml檔案
(1)將生成的證書檔案複製到Tomcat要引用的位置
(2)開啟apache-tomcat-8.0.20\conf\server.xml,修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\tomcat\tomcat.keystore" keystorePass="123456" />
這裡有兩點要注意一下:
(1)這段程式碼預設是註釋掉的,需要自己開啟。
(2)Https預設埠是443,由於我本地還裝了其它應用,所以指定8443,這樣就需要在訪問的時候,要帶埠。
同時要修改跳轉埠
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
注意事項同上。
2、修改web.xml檔案(有人也說可以不修改)
在</welcome-file-list>後面加上這樣一段
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
配置完成後,重啟Tomcat後即可以使用SSL。
3、說明
使用Https訪問,Chrome會提示安全警告,需要手動點選“高階”,“繼續訪問”即可,結果再https下使用ip地址訪問是沒有問題的可以獲取瀏覽器麥克風許可權。
三、自動生效
每次開啟URL都需要手動去點選“高階”,“繼續訪問”,有人使用下面的辦法可以解決這個問題(不過我配置完成後還是不行,我現在貼出來,大家可以試驗一下)。
1、點選URL前面的ICON
2、將證書儲存到本地
3、雙擊安裝證書
4、選擇受信任的根證書頒發機構
5、確定,重啟Chorme即可。